我有两个表(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;
答案 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
代替。