Sql server 在SQL中计算聚合select语句
我在Sql server 在SQL中计算聚合select语句,sql-server,tsql,select,Sql Server,Tsql,Select,我在Full列中得到了所有空值,我希望在其中添加上述列可能是因为您有空值问题,所以请尝试将空值替换为0 SELECT [ODT].[Date] AS 'ds', SUM(CAST([ODT].[Units] AS bigint)) AS 'total', SUM(CAST([ODT].[BASE] AS bigint)) AS 'Base', SUM(CAST([ODT].[Women] AS bigint)) AS 'Women', SUM(CAST(
Full
列中得到了所有空值,我希望在其中添加上述列可能是因为您有空值问题,所以请尝试将空值替换为0
SELECT
[ODT].[Date] AS 'ds',
SUM(CAST([ODT].[Units] AS bigint)) AS 'total',
SUM(CAST([ODT].[BASE] AS bigint)) AS 'Base',
SUM(CAST([ODT].[Women] AS bigint)) AS 'Women',
SUM(CAST([ODT].[Woven] AS bigint)) AS 'Woven',
SUM(CAST([ODT].[DHLAccessories] AS bigint)) AS 'DHLAccessories',
SUM(CAST([ODT].[BASE] + [ODT].[Women] + [ODT].[Woven] + [ODT].[DHLAccessories] AS bigint)) AS 'Full'
FROM
Orders ODT
您可能有空问题,请尝试将空替换为0
SELECT
[ODT].[Date] AS 'ds',
SUM(CAST([ODT].[Units] AS bigint)) AS 'total',
SUM(CAST([ODT].[BASE] AS bigint)) AS 'Base',
SUM(CAST([ODT].[Women] AS bigint)) AS 'Women',
SUM(CAST([ODT].[Woven] AS bigint)) AS 'Woven',
SUM(CAST([ODT].[DHLAccessories] AS bigint)) AS 'DHLAccessories',
SUM(CAST([ODT].[BASE] + [ODT].[Women] + [ODT].[Woven] + [ODT].[DHLAccessories] AS bigint)) AS 'Full'
FROM
Orders ODT
试试这个
SELECT [ODT].[Date] as 'ds'
,SUM(CAST( [ODT].[Units] AS bigint)) AS 'total'
,SUM(CAST( [ODT].[BASE] as bigint)) AS 'Base'
,SUM(CAST( [ODT].[Women] as bigint)) AS 'Women'
,SUM(CAST( [ODT].[Woven] as bigint)) AS 'Woven'
,SUM(CAST( [ODT].[DHLAccessories] as bigint)) AS 'DHLAccessories'
,sum(CAST( isnull([ODT].[BASE],0) + isnull([ODT].[Women],0) + isnull([ODT].[Woven],0) + isnull([ODT].[DHLAccessories],0) as bigint)) as 'Full'
或
试试这个
SELECT [ODT].[Date] as 'ds'
,SUM(CAST( [ODT].[Units] AS bigint)) AS 'total'
,SUM(CAST( [ODT].[BASE] as bigint)) AS 'Base'
,SUM(CAST( [ODT].[Women] as bigint)) AS 'Women'
,SUM(CAST( [ODT].[Woven] as bigint)) AS 'Woven'
,SUM(CAST( [ODT].[DHLAccessories] as bigint)) AS 'DHLAccessories'
,sum(CAST( isnull([ODT].[BASE],0) + isnull([ODT].[Women],0) + isnull([ODT].[Woven],0) + isnull([ODT].[DHLAccessories],0) as bigint)) as 'Full'
或
你的问题有多个问题。由于语法错误,您缺少
分组依据
此外,您还过度使用了转义。并且对列别名使用单引号——这两种方法都不推荐,只会使查询变得混乱
最后,您没有考虑NULL
值;为此,我建议使用COALESCE()
:
SELECT a.*,
SUM(a.total + a.Base + a.Women + a.Woven + a.DHLAccessories) as 'Full'
FROM (SELECT [ODT].[Date] as 'ds'
,SUM(CAST([ODT].[Units] AS bigint)) AS 'total'
,SUM(CAST ([ODT].[BASE] as bigint)) AS 'Base'
,SUM(CAST ([ODT].[Women] as bigint)) AS 'Women'
,SUM(CAST ([ODT].[Woven] as bigint)) AS 'Woven'
,SUM(CAST ([ODT].[DHLAccessories] as bigint)) AS 'DHLAccessories'
FROM Orders ODT) AS a
注意,您确实需要转义FULL
,因为它是SQL保留字(想想FULL JOIN
)
请注意,最后一个条件没有显式地将值转换为
bigint
。我怀疑其他专栏是否需要这样做,但我保留了转换。您的问题有多个问题。由于语法错误,您缺少分组依据
此外,您还过度使用了转义。并且对列别名使用单引号——这两种方法都不推荐,只会使查询变得混乱
最后,您没有考虑NULL
值;为此,我建议使用COALESCE()
:
SELECT a.*,
SUM(a.total + a.Base + a.Women + a.Woven + a.DHLAccessories) as 'Full'
FROM (SELECT [ODT].[Date] as 'ds'
,SUM(CAST([ODT].[Units] AS bigint)) AS 'total'
,SUM(CAST ([ODT].[BASE] as bigint)) AS 'Base'
,SUM(CAST ([ODT].[Women] as bigint)) AS 'Women'
,SUM(CAST ([ODT].[Woven] as bigint)) AS 'Woven'
,SUM(CAST ([ODT].[DHLAccessories] as bigint)) AS 'DHLAccessories'
FROM Orders ODT) AS a
注意,您确实需要转义FULL
,因为它是SQL保留字(想想FULL JOIN
)
请注意,最后一个条件没有显式地将值转换为
bigint
。我怀疑其他专栏中是否需要这样做,但我保留了转换。下面的任何答案是否解决了您的问题?如果是,请接受。以下任何答案是否解决了您的问题?如果是,请接受。