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为非行程;因此,您认为引擎分组不正确。