2016-04-20 142 views
0

我正在查询以基于表的第三列(S)的总和的前200位获取三列(A,B,S)(这有一些条件检查)。SQL多重选择查询并在同一个表上相交

SELECT TOP 200 PlantId, SKU, SUM(Demand) 
FROM NetDemandTable 
WHERE DemandWKId>=62 AND DemandWKId<=76 
GROUP BY PlantId, SKU 
ORDER BY SUM(Demand) DESC 

所得列B被认为是对其他的选择查询这又是一个唯一的记录A,B,S柱,但使用不同的条件和此塔B应当与在选择的查询所获得的结果相交1.

SELECT PlantId, SKU, SUM(Demand) 
FROM CuringNetDemandCopy 
WHERE DemandWKId < 62 
GROUP BY PlantId, SKU 
ORDER BY SUM(Demand) DESC 

现在第二个查询结果应该只选择从第一个查询中获得的列B中的SKU的实体。

回答

0

试试这个:

with cte as 
(
SELECT TOP 200 PlantId, SKU, SUM(Demand) 
FROM NetDemandTable 
WHERE DemandWKId>=62 AND DemandWKId<=76 
GROUP BY PlantId, SKU 
) 

SELECT PlantId, SKU, SUM(Demand) 
FROM CuringNetDemandCopy 
WHERE DemandWKId < 62 and SKU in (select distinct SKU from cte) 
GROUP BY PlantId, SKU 
ORDER BY SUM(Demand) DESC 
+0

我想,“是否存在”的条款,应使用here.BTW @Rajasekhar卡达姆布尔,U找什么输出r for.Like什么是查询1的主要目的 – KumarHarsh