【发布时间】:2016-09-19 15:21:20
【问题描述】:
嗨,我正在尝试选择 movementline.qty 的值,但前提是 movements.movementscode 等于 RW,如果不只是放 0.00
SELECT levelfield1.description,
products.reportuom,
products.productcode,
products.description,
Isnull(Sum(ReceivingLine.qty), 0.00) AS [B.Delivery],
movements.movementcode,
Isnull((SELECT qty
FROM MovementLine
WHERE movementcode = 'RW'), 0.00) AS [B. Returned]
FROM Products
LEFT JOIN LevelField1
ON levelfield1.levelfield1code = products.levelfield1code
LEFT JOIN ReceivingLine
ON receivingline.PRODUCTCODE = products.productcode
LEFT JOIN MovementLine
ON movementline.ProductCode = products.productcode
LEFT JOIN Movements
ON movements.MovementID = MovementLine.movementid
GROUP BY levelfield1.Description,
products.reportuom,
products.productcode,
products.description,
movementline.qty,
movements.movementcode
我有错误
子查询返回超过 1 个值。这是不允许的,当 子查询遵循 =、!=、、>= 或当子查询用作 一种表达。警告:空值被聚合消除或 其他 SET 操作。
【问题讨论】:
-
如果movements.movementscode等于RW返回多行怎么办?
-
从不使用相关子查询开始。他们是性能杀手。这可以通过连接到基表或派生表(如果需要进行计算)来完成)
标签: sql sql-server