返回运行总计的条件子查询

时间:2018-03-17 21:39:21

标签: sql-server database

我正在尝试使用返回运行总计的条件运行子查询。但是,我收到以下错误:

  

当EXISTS没有引入子查询时,只能在选择列表中指定一个表达式。

这段代码有什么办法可以挽救?请注意,此代码是一个完美执行的更大脚本的一部分。我需要保持这种格式的原因是因为它缺少一个更好的词是“缺失的部分”。

SELECT A.[WeekEnding], 
    (
    SELECT SUM(A.[Weekly Sales Units]), A.[Description], A.[WeekEnding]
    FROM [FACT_SALES_HISTORY] A 
    INNER JOIN [DIM_DATE] B
    ON A.WeekEnding = B.[WeekEnding] WHERE B.[YA Latest 1 Week] = 1 
    GROUP BY A.[Description], A.[WeekEnding]
    ) AS 'YA Units'
FROM [FACT_SALES_HISTORY] A 
LEFT JOIN [DIM_DATE] B
ON A.WeekEnding = B.[WeekEnding]

代码中的输出数据如下所示:

 [Weekly Sales Units])  A.[Description]  A.[WeekEnding]
   24                   Item One          03-10-2010
   55                   Item Two          03-10-2010
   79                   Item One          03-10-2010
   98                   Item Five         03-10-2010
   11                   Item Five         03-10-2010

2 个答案:

答案 0 :(得分:0)

您不能在子查询中选择三个不同的项目,然后使用AS分配。您可以将其拆分为两个单独的查询,然后将它们合并。

SELECT SUM(A.[Weekly Sales Units]), A.[Description], A.[WeekEnding]
    FROM [FACT_SALES_HISTORY] A 
    INNER JOIN [DIM_DATE] B
    ON A.WeekEnding = B.[WeekEnding] WHERE B.[YA Latest 1 Week] = 1 
    GROUP BY A.[Description], A.[WeekEnding]
UNION ALL -- This will only union distinct columns
SELECT A.[WeekEnding]...<Your other columns>
    FROM [FACT_SALES_HISTORY] A 

答案 1 :(得分:-1)

看起来你的子查询本身会提供样本数据,而外部查询试图在周末之前对其进行求和。如果是这种情况,那么整个事情可以用这个替换:

SELECT A.[WeekEnding], SUM(A.[Weekly Sales Units]) [YA Units]
FROM [FACT_SALES_HISTORY] A 
INNER JOIN [DIM_DATE] B
ON A.WeekEnding = B.[WeekEnding] WHERE B.[YA Latest 1 Week] = 1 
GROUP BY A.[WeekEnding]
相关问题