這是我的桌子的一個例子。
┌────────┬────────┬───────┐
│ UserId │ Status │ Value │
├────────┼────────┼───────┤
│ 1 │ 1 │ 10 │
│ 1 │ 0 │ 5 │
│ 2 │ 0 │ 8 │
│ 2 │ 1 │ 15 │
│ 1 │ 1 │ 10 │
│ 1 │ 0 │ 5 │
└────────┴────────┴───────┘
我需要GROUP BY行與組UserId中COUNT的總行數,到目前為止我沒有問題,但我也想SUM(Value)根據StatusColumn. 像COUNT我的 sql 一樣,給我組行的總和,但我需要如下結果:-)
┌────────┬──────────────────────┬─────────────────────┐
│ UserId │ SUM(Value) Status=1 │ SUM(Value) Status=0 │
├────────┼──────────────────────┼─────────────────────┤
│ 1 │ 20 │ 10 │
│ 2 │ 15 │ 8 │
└────────┴──────────────────────┴─────────────────────┘
注意:這種型別的查詢稱為條件聚合,您可以搜索有關此的更多資訊。
uj5u.com熱心網友回復:
用這個
SELECT USERID,
SUM(CASE WHEN STATUS = 1 THEN VALUE ELSE 0 END ) AS ST1,
SUM(CASE WHEN STATUS = 0 THEN VALUE ELSE 0 END ) AS ST2 FROM
DBO.TABLENAME
GROUP BY USERID
uj5u.com熱心網友回復:
假設資料型別Statusis BOOLEANor INTEGERwith only 0and 1as possible values:
SELECT UserId,
SUM(Status * Value) Status_1,
SUM((NOT Status) * Value) Status_0
FROM tablename
GROUP BY UserId;
請參閱演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/467561.html
上一篇:SQL在同一列中查找不匹配
