SQL Case语句作为列

问题描述

我有以下Case语句,希望将其显示输出中的列值,以便结果集的格式如下:

Resultset Header

SELECT 
    l.Title as List,CASE 
        WHEN _Custom57 between 13 and 17 THEN '13-17' 
        WHEN _Custom57 between 18 and 24 THEN '18-24' 
        WHEN _Custom57 between 25 and 34 THEN '25-34' 
        WHEN _Custom57 between 35 and 44 THEN '35-44' 
        WHEN _Custom57 between 45 and 54 THEN '45-54' 
        WHEN _Custom57 >= 55 THEN '55-64' 
        WHEN _Custom57 >= 65 THEN '65+' 
    END as Age,COUNT(r.ID) as RecipCount
FROM mytable (NOLOCK)```

解决方法

有条件的聚合

<input type="number" @bind="@object.AllocationPercentage" />
,

您可以使用数据透视表构建查询。.下面的示例-

SELECT * from
(SELECT 
    l.Title as List,CASE 
        WHEN _Custom57 between 13 and 17 THEN '17 and under' 
        WHEN _Custom57 between 18 and 24 THEN '18-24' 
        WHEN _Custom57 between 25 and 34 THEN '25-34' 
        WHEN _Custom57 between 35 and 44 THEN '35-44' 
        WHEN _Custom57 between 45 and 54 THEN '45-54' 
        WHEN _Custom57 >= 55 THEN '55-64' 
        WHEN _Custom57 >= 65 THEN '65+' 
    END as Age,COUNT(r.ID) as RecipCount
FROM mytable) t
PIVOT (
sum(RecipCount) for age in ([17 and under],[18-24],[25-34],[35-44],[45-54])
) as PVT