使用Union时应该如何创建临时表?

时间:2014-09-11 13:33:04

标签: sql sql-server database sql-server-2008 group-by

我无法使用错误说明的动态值bcoz “查找错误 - SQL Server数据库错误:无法对包含聚合或子查询的表达式执行聚合函数。”

以下是场景: 查询1

select pr.PRDCT,sum(CASE when pr.DEFINITIONCD='NOP' and pr.PERIOD='D' then pr.PRAMOUNT else 0 END)
as 'NOP D' from PRODUCTWISE_REPORT pr group by pr.PRDCT

查询2

select DEFINITIONTYPECD from REPORTKPIMAPTXN where DEFINITIONTYPECD='NOP' and REPORTSEQ = (select REPORTSEQ from report_m where REPORTCD='MIS_Product_Wise_Report') 

查询2返回'NOP'

所以当我在查询1中为“NOP”放置查询2时,它会抛出错误

如何在用户动态查询2时解决此问题?

1 个答案:

答案 0 :(得分:0)

您的第二个查询看起来可以使用连接而不是该子选择来重写。这样的事情。当然,您仍然会遇到一些问题,因为您的第一个查询有两列,而且只有一列。在UNION实际工作之前,您必须向此查询添加另一列(可以为NULL)。

select r.DEFINITIONTYPECD 
from REPORTKPIMAPTXN r
INNER JOIN report_m m on m.REPORTSEQ = r.REPORTSEQ
where DEFINITIONTYPECD = 'NOP' 
and r.REPORTCD = 'MIS_Product_Wise_Report'