我有一個表是這樣的:我的查詢應該如何?
date, flag 22/05/13 1 22/05/13 1 22/05/13 0 23/05/13 1 23/05/13 0
所以我需要一個查詢,我在不同的列標誌的2個可能值計算。
date flag1 flag0 22/05/13 2 1 23/05/13 1 1
我應該怎樣寫我的查詢,以獲得在我上面顯示數據的方式?
我有一個表是這樣的:我的查詢應該如何?
date, flag 22/05/13 1 22/05/13 1 22/05/13 0 23/05/13 1 23/05/13 0
所以我需要一個查詢,我在不同的列標誌的2個可能值計算。
date flag1 flag0 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]
通常我會使用一個case語句中的SUM()內的功能,但是在這種情況下,它的作品了,我們可以通過簡單的脫身(快)表達式。
+1(除非標誌是有點數據類型,不能求和,那麼你確實需要一個CASE語句。) – criticalfix
@criticalfix或強制轉換爲int –
是的,當然你是對的。 – criticalfix
您可以使用旋轉功能得到結果:
select date, [1] as flag1, [0] as flag0
from yt
pivot
(
count(flag)
for flag in ([1], [0])
) piv;
你是什麼日期列的數據類型? –