CREATE TABLE #T(LOTNO INT,QTY NUMERIC(18, 8))
......
SELECT * FROM T LEFT JOIN (SELECT LOTNO, SUM(QTY) AS QTY
FROM #T
GROUP BY LOTNO) A
ON T.LOT_NO = LOTNO
WHERE T.LOT_QTY-ISNULL(QTY,0)> 0
DROP TABLE #T
-----------------------------
在本機運行得到一條紀錄(正確),但在客戶的電腦運行得到三條紀錄(錯誤).
本機和客戶端的數據是相同的,奇怪的是在客戶端WHERE 語句
T.LOT_QTY-ISNULL(QTY,0)> 0 不知伸麼原因不起作用,改成T.LOT_QTY-ISNULL(QTY,0)> 1000 或T.LOT_QTY-ISNULL(QTY,0) <1000...或者是刪掉都是一樣的結果.
謝謝你的寶貴意見!
------解决方案--------------------
楼主可能碰到的是关于NUll值设置的问题,看下面例子(来自联机帮助)
------解决方案--------------------
WHERE T.LOT_QTY-ISNULL(QTY,0)> 0
--> 改为
WHERE isnull(T.LOT_QTY,0)-ISNULL(QTY,0)> 0
如果还有问题,建议把没有条件的数据追加到临时表中,再检查这些数据是否有问题
SELECT *
into #tt
FROM T
LEFT JOIN (SELECT LOTNO, SUM(QTY) AS QTY
FROM #T
GROUP BY LOTNO) A
ON T.LOT_NO = LOTNO
------解决方案--------------------
你的T表中有LOT_QTY為NULL的數據?
使用這個語句察看下
Select * From T Where LOT_QTY Is Null
------解决方案--------------------
应该是T.lot_qty也有null的情况。