【发布时间】:2012-08-10 11:55:27
【问题描述】:
我有一条 SQL 语句。
SELECT
ID, LOCATION, CODE,MAX(DATE),FLAG
FROM
TABLE1
WHERE
DATE <= CONVERT(DATETIME,'11-11-2012')
AND EXISTS (SELECT * FROM #TEMP_CODE WHERE TABLE1.CODE = #TEMP_CODE.CODE)
AND ID IN (14, 279)
GROUP BY
ID, LOCATION, CODE
我需要日期与 2012 年 11 月 11 日最近的行,但该表会返回所有值。我究竟做错了什么。谢谢
ID LOCATION CODE DATE FLAG
-------------------------------------------------------------------
14 CAR STREET,UDUPI 234 2012-08-08 00:00:00.000 0
14 CAR STREET,UDUPI 234 2012-08-10 00:00:00.000 1
14 CAR STREET,UDUPI 234 2012-08-14 00:00:00.000 0
279 MADHUGIRI 234 2012-08-08 00:00:00.000 1
279 MADHUGIRI 234 2012-08-11 00:00:00.000 0
我只想显示日期小于或等于给定日期的行。需要的结果是
ID LOCATION CODE DATE FLAG
-------------------------------------------------------------------
14 CAR STREET,UDUPI 234 2012-08-10 00:00:00.000 1
279 MADHUGIRI 234 2012-08-11 00:00:00.000 0
【问题讨论】:
-
首先,您为什么使用
'11-11-2012'作为您的日期格式?试试'20121111'。还有为什么第一行是 8 月 10 日而不是 8 月 14 日? -
@ Aaron Bertrand 我将其作为用户输入。我什至尝试使用 20121111 格式,但没有运气返回所有五列
-
你表中的所有记录都是
-
@AdRock
LIMIT在 SQL Server 中不存在。 -
那么您能解释一下为什么 ID = 14 时“2012-08-10”比“2012-08-14”“更近”吗?
标签: sql-server date exists