读书人

一于ISNULL函的奇怪?解决思

发布时间: 2012-01-19 00:22:27 作者: rapoo

一于ISNULL函的奇怪?
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_QTYNULL的?

使用句察看下

Select * From T Where LOT_QTY Is Null
[解决办法]
应该是T.lot_qty也有null的情况。

读书人网 >SQL Server

热点推荐