Sql server 如何在SELECT中使用大小写对汇总列进行分组

Sql server 如何在SELECT中使用大小写对汇总列进行分组,sql-server,tsql,group-by,sum,Sql Server,Tsql,Group By,Sum,我有这样的数据 Value | Type ----- | ------ 100 | Travel 200 | G&A 100 | OH 300 | Travel 我想总结如下: TotalValue | Type ---------- | ------ 400 | Travel 300 | Non-Travel SELECT SUM([Value]) as 'TotalValue', CASE [Type] WHEN 'T

我有这样的数据

Value | Type
----- | ------
100   | Travel
200   | G&A
100   | OH
300   | Travel
我想总结如下:

TotalValue | Type
---------- | ------
400        | Travel
300        | Non-Travel
SELECT 
    SUM([Value]) as 'TotalValue',
    CASE [Type] WHEN 'Travel' THEN [Type] ELSE 'Non-Travel' END AS 'Type'
FROM 
    #tableName
GROUP BY 
    [Type]
我写了这样一个查询:

TotalValue | Type
---------- | ------
400        | Travel
300        | Non-Travel
SELECT 
    SUM([Value]) as 'TotalValue',
    CASE [Type] WHEN 'Travel' THEN [Type] ELSE 'Non-Travel' END AS 'Type'
FROM 
    #tableName
GROUP BY 
    [Type]
然而,结果却是这样:

TotalValue | Type
---------- | ------
400        | Travel
200        | Non-Travel
100        | Non-Travel

我怎样才能解决这个问题?提前感谢您的帮助

使用您在
中使用的表达式,并在
分组方式中选择

SELECT 
    SUM([Value]) as TotalValue,
    CASE [Type] WHEN 'Travel' THEN [Type] ELSE 'Non-Travel' END AS Type
FROM 
    #tableName
GROUP BY 
    CASE [Type] WHEN 'Travel' THEN [Type] ELSE 'Non-Travel' END 
rextester演示:

返回:

+------------+------------+
| TotalValue |    Type    |
+------------+------------+
|        300 | Non-Travel |
|        400 | Travel     |
+------------+------------+

注意:不要在别名(即字符串文字)周围使用单引号。如果您的别名与的规则冲突,请将其括在方括号中

使用您在
中使用的表达式,并在
分组方式中选择

SELECT 
    SUM([Value]) as TotalValue,
    CASE [Type] WHEN 'Travel' THEN [Type] ELSE 'Non-Travel' END AS Type
FROM 
    #tableName
GROUP BY 
    CASE [Type] WHEN 'Travel' THEN [Type] ELSE 'Non-Travel' END 
rextester演示:

返回:

+------------+------------+
| TotalValue |    Type    |
+------------+------------+
|        300 | Non-Travel |
|        400 | Travel     |
+------------+------------+

注意:不要在别名(即字符串文字)周围使用单引号。如果您的别名与的规则冲突,请将其括在方括号中

您遇到了操作顺序问题。然后选择“从”组将运行。执行分组依据时,别名“type”不在范围内。[type]中被分组的值是数据库中的类型值;不是你的案例重新评估的那些。然后选择运行,案例评估G&A和OH为非行程;因此,您认为引擎分组不正确。您遇到了操作顺序问题。然后选择“从”组将运行。执行分组依据时,别名“type”不在范围内。[type]中被分组的值是数据库中的类型值;不是你的案例重新评估的那些。然后选择运行,案例评估G&A和OH为非行程;因此,您认为引擎分组不正确。