我有一张这样的桌子:
日期、标志 22/05/13 1 22/05/13 1 22/05/13 0 23/05/13 1 23/05/13 0
所以我需要一个查询,我在不同的列中计算标志的 2 个可能值。
日期标志1标志0 22/05/13 2 1 23/05/13 1 1
我应该如何编写查询以便以上面显示的方式获取数据?
我有一张这样的桌子:
日期、标志 22/05/13 1 22/05/13 1 22/05/13 0 23/05/13 1 23/05/13 0
所以我需要一个查询,我在不同的列中计算标志的 2 个可能值。
日期标志1标志0 22/05/13 2 1 23/05/13 1 1
我应该如何编写查询以便以上面显示的方式获取数据?
像这样的东西:
SELECT
[date]
SUM(CASE WHEN tbl.flag=0 THEN 1 ELSE 0 END) AS flag0,
SUM(CASE WHEN tbl.flag=1 THEN 1 ELSE 0 END) AS flag1
FROM
tbl
GROUP BY
tbl.[date]
SELECT [date], sum(flag) "flag1", sum(1-flag) "flag0"
FROM [table]
GROUP BY [date]
通常我会在 SUM() 函数中使用 case 语句,但在这种情况下,我们可以使用简单(且更快)的表达式。
您可以使用 PIVOT 函数来获得结果:
select date, [1] as flag1, [0] as flag0
from yt
pivot
(
count(flag)
for flag in ([1], [0])
) piv;