chi*_*bis 3 sql sql-server-2008
我有一个表(sql 2008),在col1中有A,B,C,D,E值是否有办法获得按col1分组的计数,以便返回的结果将是
A - #
B - #
other - #
Run Code Online (Sandbox Code Playgroud)
谢谢
重复CASE表达式有效,但我发现只执行一次表达式就不那么繁琐了.计划完全相同.
;WITH x AS
(
SELECT Name = CASE WHEN Name IN ('A','B') THEN Name
ELSE 'Other' END
FROM dbo.YourTable
)
SELECT Name, COUNT(*) FROM x
GROUP BY Name;
Run Code Online (Sandbox Code Playgroud)
如果排序很重要(例如,Other应该是结果中的最后一行,即使其他名称按字母顺序排在后面),那么您可以说:
ORDER BY CASE WHEN Name = 'Other' THEN 1 ELSE 0 END, Name;
Run Code Online (Sandbox Code Playgroud)
select
case when col1 in ('a','b') then col1 else 'other' end,
count(*)
from tab
group by case when col1 in ('a','b') then col1 else 'other' end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
989 次 |
| 最近记录: |