【问题标题】:Subquery in a Stored Procedure存储过程中的子查询
【发布时间】:2015-02-08 11:30:16
【问题描述】:

我的问题是,在两个表中,我需要一个结果集来显示每个 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 中?

我总是出错

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

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

谢谢你。帮助 迈克尔

【问题讨论】:

  • 这些查询是否有共同的字段?

标签: sql-server stored-procedures subquery


【解决方案1】:

你可以试试下面的

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 

如果有帮助请告诉我

【讨论】:

  • 感谢您的努力,但它仍然错过了第二笔款项,即库存商品。您的代码只是总结了订购的物品。同时,我找到了一个解决方案并且它有效:我创建了一个表值函数来计算库存项目,并将它与“外部应用”与有序表连接起来。
猜你喜欢
  • 2011-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多