簡體   English   中英

SQL 服務器 CASE 表達式不會導致瀑布

[英]SQL Server CASE expression that does not result in waterfall

如果我有一個案例表達式,有沒有一種方法不能像瀑布一樣工作?

例如,如果我有以下數據集:

group    value
---------------
derek    5
cait     1
david    2
denver   3

有沒有辦法可以顯示以下結果

CASE 
    WHEN group like 'd%' then d
    WHEN group like 'de% then de
    ELSE other

以顯示

group  value
--------------
d      10
de     8
other  3

現在它顯示為

group  value
--------------
d      10
other  2

您可以改用left join

select coalesce(which, 'other'), sum(t.value)
from t left join
     (values ('d%', 'd'), ('de%', 'de')
     ) v(pattern, which)
     on t.group like v.pattern
group by which;

你可以使用聯合。

SELECT 'd' [group], SUM(Value)[Value] FROM <table_name> WHERE [GROUP] LIKE 'd%'
UNION
SELECT 'de' [group], SUM(Value)[Value] FROM <table_name> WHERE [GROUP] LIKE 'de%'
UNION
SELECT 'other' [group], SUM(Value)[Value] FROM <table_name> WHERE [GROUP] NOT LIKE 'd%' OR [GROUP] NOT LIKE 'de%'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM