我試圖寫在SQL Server查詢抓住這些樣本值:報告sql查詢多個何在
firstname,
lastname,
count(reports where status =1),
count(reports where status =2)
我如何才能在一個SQL語句,這些價值觀?
這裏是樣本輸出
我試圖寫在SQL Server查詢抓住這些樣本值:報告sql查詢多個何在
firstname,
lastname,
count(reports where status =1),
count(reports where status =2)
我如何才能在一個SQL語句,這些價值觀?
這裏是樣本輸出
我認爲你也可以用PIVOT來完成它。我不知道你會想:
DECLARE @tbl TABLE(UserName VARCHAR(10), Report VARCHAR(10), StatusId INT)
INSERT INTO @tbl VALUES ('bob','report1',1)
,('bob','report2',1)
,('bob','report3',2)
,('jim','report2',1)
,('joe','report3',3)
SELECT UserName, [1] Status1_Count,[2] Status2_Count,[3] Status3_Count
FROM (SELECT UserName
,StatusId
,COUNT(*) ReportCount
FROM @tbl
GROUP BY UserName
,StatusId) src
PIVOT (MAX(StatusId)
FOR StatusId IN ([1],[2],[3])) pvt
的GROUP BY和COUNT答案是一般的好,它只是沒有做你問什麼,這是不具有對用戶的所有狀態計數一個單一的行。
這個效果更好,因爲它是每列,我只想要某些狀態 –
聽起來像是你將需要使用一個case語句
這很難決定你什麼恰與問題,但case語句看起來是這樣的:
sum(CASE WHEN status = 1 THEN reports ELSE 0 END),
sum(CASE WHEN status = 2 THEN reports ELSE 0 END),
sum(CASE WHEN status = 1 THEN 1 ELSE 0 END),
sum(CASE WHEN status = 2 THEN 1 ELSE 0 END)
貌似XY問題,我...
select firstname, lastname, status, count(status)
from report
group by firstname, lastname, status
order by firstname, lastname, status
這就足夠接近我想列出謝謝 –
它可以完成使用通用表表達式的列,但是這是一個壞的方法 - 你必須知道可能的狀態,對於行來說,它是不需要的 – keltar
如果其他列數據是按行計算的,那麼究竟是什麼總和?你能提供所需結果的樣本嗎? – keltar
仍然沒有得到它。總結一下?所有報告具有相同的狀態? (併爲每一行復制這筆金額?)。所有報告具有相同的名字/姓氏相同的狀態? 'sum(all'是什麼意思? – keltar
我想要的人和每個狀態的人的報告數量,狀態數量1,狀態數量2,狀態數量3 –