带有条件的SubQuery内连接

时间:2014-06-06 12:15:18

标签: sql sql-server

我有两个表(REPORTDETAILS,REPORTITEMS),我想查询其中一个表,找到两个值之间的最大值+ 1,但我也希望同时找到另一个表的最大值+ 1。

我从第一个表中获取了正确的值,但第二个值不正确,因为我为第一个表内置了条件。

纠正这种说法的正确方法是什么?

感谢您一如既往的帮助。

这是我的陈述。

SELECT MAX(rd.REPNUMBER) + 1 as REPNUMBER, 
       MAX(ri.REPITEM) + 1 as REPITEM 

FROM  REPORTDETAILS rd INNER JOIN REPORTITEMS ri ON rd.REPNUMBER = ri.REPNUMBER  
WHERE rd.REPNUMBER BETWEEN 11000000 and 11099999;

1 个答案:

答案 0 :(得分:3)

您可以在CASE语句中使用MAX并移除您的WHERE criteria

SELECT MAX(CASE WHEN rd.REPNUMBER BETWEEN 11000000 and 11099999 
           THEN rd.REPNUMBER END) + 1 as REPNUMBER, 
       MAX(ri.REPITEM) + 1 as REPITEM 
FROM  REPORTDETAILS rd 
       INNER JOIN REPORTITEMS ri ON rd.REPNUMBER = ri.REPNUMBER  

由于INNER JOIN,这仍然只会根据max(repitem)reportdetails之间的匹配记录显示reportitems。如果您只想max(repitem)而不管reportdetails,那么您可以使用CROSS JOIN代替。