2014-09-11 26 views
0

我无法使用动态值bcoz的错误,指出 “查找错误 - SQL Server数据库错误:无法对包含聚合或子查询的表达式执行聚合函数”。使用Union时应如何创建临时表?

这里的情景: 查询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'

所以,当我把查询2查询1“NOP ',它抛出错误

如何解决这个时,我已经到用户动态查询2?

+0

请提供样本数据和预期结果。 – 2014-09-11 13:36:24

回答

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'