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
。我怀疑其他专栏中是否需要这样做,但我保留了转换。

下面的任何答案是否解决了您的问题?如果是,请接受。以下任何答案是否解决了您的问题?如果是,请接受。