0

SQL ステートメントがあります。

SELECT ID, LOCATION, CODE,MAX(DATE) 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,(DATE)

11-11-2012 に最も近い日付の行が必要ですが、テーブルはすべての値を返します。私は何を間違っていますか。ありがとう

ID     LOCATION                 CODE            DATE
-------------------------------------------------------------------
14  CAR STREET,UDUPI            234   2012-08-08 00:00:00.000
14  CAR STREET,UDUPI            234   2012-08-10 00:00:00.000
14  CAR STREET,UDUPI            234   2012-08-14 00:00:00.000
279 MADHUGIRI                   234   2012-08-08 00:00:00.000
279 MADHUGIRI                   234   2012-08-11 00:00:00.000

最大日付の行を選択する必要があります。必要な結果は

ID     LOCATION                 CODE            DATE
-------------------------------------------------------------------
14  CAR STREET,UDUPI            234   2012-08-10 00:00:00.000
279 MADHUGIRI                   234   2012-08-11 00:00:00.000
4

3 に答える 3

3

条項(DATE)から削除します。GROUP BY

変化する

SELECT ID, LOCATION, CODE,MAX(DATE) FROM TABLE1 WHERE  
DATE <= CONVERT(DATETIME,'11-11-2012') AND  
EXISTS(SELECT * FROM #TEMP_CODE WHERETABLE1.CODE =#TEMP_CODE.CODE)  
AND ID IN ('KBL01005','KBL05020') 
GROUP BY ID, LOCATION, CODE,(DATE)

SELECT ID, LOCATION, CODE,MAX(DATE) FROM TABLE1 WHERE  
DATE <= CONVERT(DATETIME,'11-11-2012') AND  
EXISTS(SELECT * FROM #TEMP_CODE WHERETABLE1.CODE =#TEMP_CODE.CODE)  
AND ID IN ('KBL01005','KBL05020') 
GROUP BY ID, LOCATION, CODE
于 2012-08-10T10:55:14.630 に答える
1

明確な日付形式を使用してみてください

SELECT ID, LOCATION, CODE,MAX(DATE) FROM TABLE1 
WHERE DATE <= '20121111' AND   
EXISTS(SELECT * FROM #TEMP_CODE WHERETABLE1.CODE =#TEMP_CODE.CODE)   
AND ID IN ('KBL01005','KBL05020')  
GROUP BY ID, LOCATION, CODE 

明確な日付形式を使用する必要がある理由も参照してくださいhttp://beyondrelational.com/modules/2/blogs/70/posts/10898/understanding-datetime-column-part-ii.aspx

于 2012-08-10T11:29:43.167 に答える
0

使用する必要はありませんGroup by (Date)。これを試して:

SELECT ID, LOCATION, CODE,MAX(DATE) 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-08-10T11:06:03.000 に答える