存储过程中的子查询

时间:2015-02-08 11:30:17

标签: sql-server stored-procedures subquery

我的问题是,在两个表格中,我需要一个结果集,显示每个PLU的订购商品数量以及仍有库存的商品数量。

我无法在一个存储过程中执行此操作。

我的查询显示订单。

SELECT 
    tblOrderDetails.PLU, tblArtikel.Description, 
    SUM(tblOrderDetails.Pieces) AS Pieces
FROM 
    tblOrderDetails 
INNER JOIN
    tblArtikel ON tblOrderDetails.PLU = tblArtikel.PLU 
GROUP BY 
    tblOrderDetails.PLU, tblArtikel.Description 

作为输出返回:

30002 BA4875 3  
30012 UK8798 15

我的库存是用

查询的
(SELECT SUM(tblStock.Pieces) AS Ls, tblStock.PLU
from tblStock
GROUP BY tblStock.PLU)

结果如下:

30002 BA4875 3  0   
30012 UK8798 15  8

意味着artikelno 30002有3个有序和0个库存

那么,如何将两个查询(结果集)合并到一个SP中?

我总是收到错误

  

Msg 116
  当未使用EXISTS引入子查询时,只能在选择列表中指定一个表达式。

我知道错误是什么,但如果没有库存查询中的PLU,我不知道如何组合两个结果集。

谢谢你。救命 迈克尔

1 个答案:

答案 0 :(得分:0)

请你试试下面的

SELECT 
tblOrderDetails.PLU, tblArtikel.Description, 
SUM(tblOrderDetails.Pieces) AS Pieces
FROM  tblOrderDetails 
INNER JOIN  tblArtikel ON tblOrderDetails.PLU = tblArtikel.PLU 
where exists 
(
    select SUM(tblStock.Pieces) AS Ls, tblStock.PLU from tblStock 
    where  tblArtikel.PLU = tblStock.PLU       
    GROUP BY tblStock.PLU
    having SUM(tblStock.Pieces) > 0
)
GROUP BY tblOrderDetails.PLU, tblArtikel.Description 

如果有帮助,请告诉我

相关问题