首先,我想感谢你们对我的问题和其他问题的所有帮助。
我有MS SQL2008 R2,我得到了两列之和,如下所示:
SELECT SUM(RATE+RATE_ADDITIONAL) FROM LOADS WHERE INVOICED=1
and NOT OV_FACTORING=2 and DATE_INVOICED >= '1/1/2007'
and DATE_INVOICED <= '5/1/2012'但是当我像这样尝试的时候:
SELECT SUM(RATE+RATE_ADDITIONAL) FROM LOADS WHERE INVOICED=1
AND OV_FACTORING=3 OR OV_FACTORING=4 OR OV_FACTORING=5
and DATE_INVOICED >= '1/1/2007' and DATE_INVOICED <= '5/1/2012'当它应该是相同的时候,它会得到一个不同的总数,因为在OV_FACTORING中,唯一的值是: 2,3,4和5。
我有一个名为LOAD_NO的列,我希望获得在另一个查询中不同或不存在的LOAD_NO,因此可以比较这两个查询,并输出不同的load_no或显示在其中一个查询中而不出现在另一个查询中的up。
我在网站上尝试了一些示例,但无法让它们正常工作。
再次感谢你的帮助...
发布于 2012-05-02 21:36:13
要获得相同的结果,您需要将OV_FACTORING过滤器隔离在一起,如下所示:
SELECT SUM(RATE+RATE_ADDITIONAL)
FROM LOADS WHERE INVOICED=1 AND
(OV_FACTORING=3 OR OV_FACTORING=4 OR OV_FACTORING=5) AND
DATE_INVOICED >= '1/1/2007' AND DATE_INVOICED <= '5/1/2012'发布于 2012-05-02 21:35:36
如果你想在OV_FACTORING中限制,你可以这样做:
SELECT OV_FACTORING, SUM(RATE+RATE_ADDITIONAL)
FROM dbo.LOADS
WHERE INVOICED = 1
AND OV_FACTORING IN (3,4,5)
AND DATE_INVOICED >= '20070101'
AND DATE_INVOICED <= '20120501'
GROUP BY OV_FACTORING;或者如果您真的想要OR语句。然后你可以这样做:
SELECT OV_FACTORING, SUM(RATE+RATE_ADDITIONAL)
FROM dbo.LOADS
WHERE INVOICED = 1
AND (OV_FACTORING=3 OR OV_FACTORING=4 OR OV_FACTORING=5)
AND DATE_INVOICED >= '20070101'
AND DATE_INVOICED <= '20120501'
GROUP BY OV_FACTORING;发布于 2012-05-02 21:34:23
要查看表中的数字是否准确,请检查以下各项的结果:
SELECT OV_FACTORING, SUM(RATE+RATE_ADDITIONAL)
FROM dbo.LOADS
WHERE INVOICED = 1
AND DATE_INVOICED >= '20070101'
AND DATE_INVOICED <= '20120501'
GROUP BY OV_FACTORING;一些与问题无关的一般性评论:
https://stackoverflow.com/questions/10414794
复制相似问题