2012-05-08 3 views
0

В моей таблице у меня иногда есть две даты с двумя значениями, но мне просто нужен один из них. Есть ли какой-либо выбор отдельного значения на основе определенной даты?Отдельные значения для отдельного datadate в 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-сервера вы используете? – Arion

ответ

3

Вы можете использовать group by:

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

Я использую SQL Server 2008 R2 – user1129988

+0

в основном, если есть два значения datadate, которые просто выбирают один из них. – user1129988

0

Если вы используете SQL сервер 2005+. Тогда вы можете сделать это:

;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

В функции КТР вы можете join или делать то, что когда-либо вы не можете получить вывод, который вы хотите. Например:

;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

Проблема в том, что существует более одной таблицы. Указанная выше дата и соответствующее значение разные применяются только для одной таблицы, в то время как в запросе есть другие таблицы, но они не нуждаются в изменении значения, которое строка, исключенная для даты, является точной. – user1129988

+0

Обновлено затем ответ – Arion

Смежные вопросы