在 T-SQL 查询中对 nvarchar 数据类型使用 GROUP BY 子句
Using GROUP BY clause on nvarchar data type in T-SQL Query
我正在使用 SQL SERVER 2014。我有一个这样的查询:
SELECT [PMSConfirmationNumber],[AR ACCOUNT NAME],sum([FOC NET AMOUNT]) AS [FOC_NET AMOUNT]
FROM ARACCOUNT
WHERE [PMSCONFIRMATIONNUMBER] = '81827436-1'
Group by [PMSConfirmationNumber],[AR ACCOUNT NAME],[FOC NET AMOUNT]
但是,PMSCONFIRMATIONNUMBER 字段是 NVARCHAR 数据类型,我得到以下输出:
PMSConfirmationNumber AR ACCOUNT NAME FOC_NET AMOUNT
81827436-1 TRltd 1400
81827436-1 TRltd 600
因为我在初始查询中使用了 SUM(FOC NET AMOUNT),所以我得到以下输出:
PMSConfirmationNumber AR ACCOUNT NAME FOC_NET AMOUNT
81827436-1 TRltd 2000
如何修改查询?在研究该主题时,我遇到了 'PARTITION BY' 子句,但在我的查询中实现它时遇到了一些困难。
这与nvarchar类型无关。问题是您将汇总的列包含在 group by 子句中。
从 group by 子句中删除 [FOC NET AMOUNT]
。它不应该存在,因为它在聚合函数中使用,因此不属于分组。
我正在使用 SQL SERVER 2014。我有一个这样的查询:
SELECT [PMSConfirmationNumber],[AR ACCOUNT NAME],sum([FOC NET AMOUNT]) AS [FOC_NET AMOUNT]
FROM ARACCOUNT
WHERE [PMSCONFIRMATIONNUMBER] = '81827436-1'
Group by [PMSConfirmationNumber],[AR ACCOUNT NAME],[FOC NET AMOUNT]
但是,PMSCONFIRMATIONNUMBER 字段是 NVARCHAR 数据类型,我得到以下输出:
PMSConfirmationNumber AR ACCOUNT NAME FOC_NET AMOUNT
81827436-1 TRltd 1400
81827436-1 TRltd 600
因为我在初始查询中使用了 SUM(FOC NET AMOUNT),所以我得到以下输出:
PMSConfirmationNumber AR ACCOUNT NAME FOC_NET AMOUNT
81827436-1 TRltd 2000
如何修改查询?在研究该主题时,我遇到了 'PARTITION BY' 子句,但在我的查询中实现它时遇到了一些困难。
这与nvarchar类型无关。问题是您将汇总的列包含在 group by 子句中。
从 group by 子句中删除 [FOC NET AMOUNT]
。它不应该存在,因为它在聚合函数中使用,因此不属于分组。