2014-09-11 25 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'