我的user_trans表看起来像这样
SELECT USER_ID,
MAX(DATE_TO) AS DATE_TO
FROM USER_TRANS
WHERE DATE_TO <= CONVERT (datetime, (({d '2013-03-15' })+1)
GROUP BY USER_ID
我需要选择date_to不在所选日期范围内的最大用户记录。选定日期2013年1月3日 - 2013年3月15日
如果我将查询编写为
User_ID Date_To
00001 2013-03-05
00026 2013-02-15
将选择如下
{{1}}
由于某些记录user_ID 0001属于所选日期的范围,因此我不希望任何记录出现在结果中。我怎么能这样做?
谢谢。
答案 0 :(得分:1)
像这样的东西
SELECT USER_ID,
MAX(DATE_TO) AS DATE_TO
FROM USER_TRANS WHERE
USER_ID IN (SELECT USER_ID FROM USER_TRANS EXCEPT
SELECT USER_ID FROM USER_TRANS
WHERE DATE_TO BETWEEN CONVERT (datetime, (({d '2013-03-01' })) AND CONVERT (datetime, (({d '2013-03-15' }))
)
GROUP BY USER_ID
答案 1 :(得分:0)
SELECT USER_ID,
MAX(DATE_TO) AS DATE_TO
FROM USER_TRANS u1
WHERE NOT EXISTS
(SELECT * FROM USER_TRANS u2 WHERE u2.user_id = u1.user_id
and date_to BETWEEN '3/1/2013' AND '3/15/2013')
GROUP BY USER_ID