2012-05-08 5 views
0

私のテーブルには2つの値がある2つの日付があることがありますが、そのうちの1つだけ必要です。別の日付に基づいて別の値を選択する必要はありますか?SQL内の別のデーターダに固有の値

例:私が取得する必要がどのような

DATADATE    ID 
2008-06-30 00:00:00.000 12 
2008-03-31 00:00:00.000 12 
2007-12-31 00:00:00.000 3 
2007-12-31 00:00:00.000 12 
2007-09-30 00:00:00.000 3 
2007-09-30 00:00:00.000 12 
2007-06-30 00:00:00.000 3 
2007-06-30 00:00:00.000 12 
2007-03-31 00:00:00.000 3 
2007-03-31 00:00:00.000 12 
2006-12-31 00:00:00.000 3 
2006-09-30 00:00:00.000 3 
2006-06-30 00:00:00.000 3 

はこれです:

DATADATE    ID 
2008-06-30 00:00:00.000 12 
2008-03-31 00:00:00.000 12 
2007-12-31 00:00:00.000 12 
2007-09-30 00:00:00.000 12 
2007-06-30 00:00:00.000 12 
2007-03-31 00:00:00.000 12 
2006-12-31 00:00:00.000 3 
2006-09-30 00:00:00.000 3 
2006-06-30 00:00:00.000 3 

すべてのヘルプは本当に感謝感謝です。

+0

どのバージョンのSQL Serverを使用していますか? – Arion

答えて

3

あなたはgroup byを使用することができます。

select DATADATE 
,  max(IDs) 
from YourTable 
group by 
     DATADATE 
+0

私はSQL Server 2008 R2 – user1129988

+0

を基本的に使用していますが、そのうちの1つを選択する2つのデータ値がある場合 – user1129988

0

は、SQL Server 2005+を使用している場合。あなたはあなたが欲しいの出力を得るためにカントこれまで何joinまたは行うことができますCTE機能で

;WITH CTE 
AS 
(
    SELECT 
     ROW_NUMBER() OVER(PARTITION BY ID ORDER BY DATADATE DESC) AS RowNbr, 
     Table1.* 
    FROM 
     Table1 
) 
SELECT 
    * 
FROM 
    CTE 
WHERE 
    CTE.RowNbr=1 

EDIT

:次に、あなたはこれを行うことができます。このように:

;WITH CTE 
AS 
(
    SELECT 
     ROW_NUMBER() OVER(PARTITION BY Table1.ID ORDER BY Table2.DATADATE DESC) AS RowNbr, 
     Table1.* 
    FROM 
     Table1 
     JOIN Table2 
      ON Table1.ID = Table2.ID 
) 
SELECT 
    * 
FROM 
    CTE 

WHERE 
    CTE.RowNbr=1 
+0

問題は1つ以上のテーブルが存在することです..上記の日付と、一方、クエリには他のテーブルがありますが、値を変更する必要はありません。日付に対して除外されている行はきれいです – user1129988

+0

更新されました – Arion