Я делаю:
select sum(clicks),
date
from stats
group by date
... однако, когда сумма является пустой для некоторой даты, целая строка отбрасывается, я хочу видеть: | null | some_date |
, как сделать так?
Было бы полезно увидеть полный рассматриваемый запрос. Для каждого значения даты, которое существует в stats
, вы должны получить либо NULL для Sum, либо целочисленное значение. Если вы группируете по [Дата], а заданное значение даты не существует, оно, очевидно, не появится. Например, рассмотрим следующий тест:
Create Table Test ( Clicks int null, [Date] datetime null )
Insert Test(Clicks,[Date]) Values(1,'2010-06-06')
Insert Test(Clicks,[Date]) Values(2,Null)
Insert Test(Clicks,[Date]) Values(3,'2010-06-06')
Insert Test(Clicks,[Date]) Values(4,'2010-06-07')
Insert Test(Clicks,[Date]) Values(4,Null)
Insert Test(Clicks,[Date]) Values(4,'2010-06-07')
Insert Test(Clicks,[Date]) Values(Null,'2010-06-08')
Select T.[Date], Sum(Clicks)
From Test T
Group By T.[Date]
Результаты должны выглядеть так:
NULL 6
2010-06-06 00:00:00.000 4
2010-06-07 00:00:00.000 8
2010-06-08 00:00:00.000 NULL
Обратите внимание, что я все равно получаю строку, даже если Sum (Clicks)
имеет значение NULL. Вы присоединяете эту информацию к чему-то еще в вычислении Sum (Clicks)
?
Поскольку вы выполняете группировку по дате, я предполагаю, что у вас есть более одной записи на дату. Я думаю, что вам придется ifnull
на исходных данных, иначе вы потеряете некоторые.
Например, если 10 июня было 10, 20, 30 и null, вы получите null вместо 60.
Я думаю, это предотвратит эту проблему:
select ifnull(sum(ifnull(clicks,0)), 'null'), date from stats group by date;