SUM(CASE WHEN column1 = 'value1' THEN 1 ELSE 0 END),
SUM(CASE WHEN column2 = 'value2' THEN 1 ELSE 0 END)..
Run Code Online (Sandbox Code Playgroud)
我不知道为什么我发现很难理解上述语句中究竟发生了什么以及“Then 1 else 0”在这里做什么。
Aar*_*and 14
如果column1
包含该值,value1
则CASE
表达式将返回 1,并SUM()
为该行添加 1。如果不是,则CASE
表达式将返回 0,并为该行添加 0。这是一种计算 中有多少行value1
的方法column1
,但还有其他方法可以做到这一点,例如在 2012+ 上:
SELECT COUNT(IIF(column1 = 'value1', 'truish', NULL))
Run Code Online (Sandbox Code Playgroud)
在早期版本上:
SELECT COUNT(CASE WHEN column1 = 'value1' THEN 'truish' END)
Run Code Online (Sandbox Code Playgroud)
(您不需要ELSE
此处,因为与 不同SUM
,COUNT
忽略NULL
。)
我将值更新1
为字符串以证明这与布尔值无关。
归档时间: |
|
查看次数: |
50042 次 |
最近记录: |