不能使这个子查询使用SUM工作

时间:2015-03-28 19:43:50

标签: sql sum subquery

我有以下代码:

SELECT LDP.Id_Lista_Precios,
       LDP.Id_Producto,
       PR.STOCK,
       (SELECT SUM(Cantidad) FROM Pedidos_Detalle PD 
          WHERE PD.Id_Producto=LDP.Id_Producto AND PD.Id_Pedido 
          IN (SELECT Id_Pedido FROM Pedidos WHERE Id_Estado=1 OR Id_Estado=6))
FROM Listas_Precios_Detalle LDP
INNER JOIN Productos PR ON PR.Id_Producto=LDP.Id_Producto
WHERE Id_Lista_Precios=6

请关注这个表达:

(SELECT SUM(Cantidad) FROM Pedidos_Detalle PD
WHERE PD.Id_Producto=LDP.Id_Producto AND PD.Id_Pedido
IN (SELECT Id_Pedido FROM Pedidos WHERE Id_Estado=1 OR Id_Estado=6))

基本上,我希望这可以返回一些关于所选价目表的数据以及每个产品在所有“等待”和“准备”订单状态的总和,只有它们。

该列只返回NULL,但是......如果您像这样硬核产品ID:

(SELECT SUM(Cantidad) FROM Pedidos_Detalle PD
WHERE PD.Id_Producto=16 AND PD.Id_Pedido
IN (SELECT Id_Pedido FROM Pedidos WHERE Id_Estado=1 OR Id_Estado=6))

一切正常!

1 个答案:

答案 0 :(得分:1)

您的查询看起来很好:

SELECT LDP.Id_Lista_Precios, LDP.Id_Producto, PR.STOCK,
       (SELECT SUM(Cantidad)
        FROM Pedidos_Detalle PD
        WHERE PD.Id_Producto = LDP.Id_Producto AND
              PD.Id_Pedido IN (SELECT Id_Pedido FROM Pedidos WHERE Id_Estado IN (1 , 6) )
       )
FROM Listas_Precios_Detalle LDP INNER JOIN
     Productos PR
     ON PR.Id_Producto = LDP.Id_Producto
WHERE Id_Lista_Precios = 6

相关子查询没有明显的问题。