【问题标题】:Can´t make this subquery with SUM work无法使用 SUM 进行此子查询
【发布时间】:2015-03-28 19:43:50
【问题描述】:

我有以下代码:

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))

效果很好!

【问题讨论】:

  • 当我说它有效时,我的意思是它不会返回 NULL,但它会为所选价目表中的所有产品返回相同的值(在本例中为 40),显然是因为它是硬编码的。谢谢!

标签: sql sum subquery


【解决方案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

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

【讨论】:

  • 是的,谢谢,但它不起作用:6 8 -45 NULL 6 11 13 NULL 6 7 -12 NULL 6 10 -5 NULL 6 14 90 NULL
  • @FedericoVazquez。 . .如果你得到NULL 值,那么可能数据中没有匹配项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-10
  • 1970-01-01
相关资源
最近更新 更多