khtan
In (Som, Ni, Yak)
17689 Posts |
Posted - 2007-10-04 : 12:01:29
|
[code]DECLARE @history TABLE( HistoryID int, Item CHAR(1), Value int, Created datetime, Updated datetime)INSERT INTO @historySELECT 1, 'A', 50, '20070509', '20070509' UNION ALLSELECT 2, 'A', 55, '20070509', '20070510' UNION ALLSELECT 3, 'A', 45, '20070509', '20070520' UNION ALLSELECT 4, 'A', 60, '20070509', '20070602' UNION ALLSELECT 5, 'A', 65, '20070509', '20070611' UNION ALLSELECT 6, 'A', 30, '20070509', '20070617' UNION ALLSELECT 7, 'A', 35, '20070509', '20070618' UNION ALLSELECT 8, 'A', 39, '20070509', '20070628' UNION ALLSELECT 9, 'A', 35, '20070509', '20070718' UNION ALLSELECT 10, 'A', 55, '20070509', '20070828' UNION ALLSELECT 11, 'B', 50, '20070425', '20070425' UNION ALLSELECT 12, 'B', 55, '20070425', '20070510' UNION ALLSELECT 13, 'B', 45, '20070425', '20070530' UNION ALLSELECT 14, 'B', 60, '20070425', '20070602' UNION ALLSELECT 15, 'B', 65, '20070425', '20070611' UNION ALLSELECT 16, 'B', 30, '20070425', '20070612' UNION ALLSELECT 17, 'B', 35, '20070425', '20070613' UNION ALLSELECT 18, 'B', 39, '20070425', '20070629'SELECT [MONTH] = DATEADD(MONTH, DATEDIFF(MONTH, 0, h.Updated), 0), h.HistoryID, h.Item, h.Value, h.Created, h.UpdatedFROM @history h INNER JOIN ( SELECT [MONTH] = DATEADD(MONTH, DATEDIFF(MONTH, 0, Updated), 0), Item, Updated = MAX(Updated) FROM @history GROUP BY DATEADD(MONTH, DATEDIFF(MONTH, 0, Updated), 0), Item ) m ON h.Item = m.Item AND h.Updated = m.UpdatedORDER BY [MONTH], h.Item/*MONTH HistoryID Item Value Created Updated ----------- ----------- ---- ----------- ----------- ----------- 2007-04-01 11 B 50 2007-04-25 2007-04-25 2007-05-01 3 A 45 2007-05-09 2007-05-20 2007-05-01 13 B 45 2007-04-25 2007-05-30 2007-06-01 8 A 39 2007-05-09 2007-06-28 2007-06-01 18 B 39 2007-04-25 2007-06-29 2007-07-01 9 A 35 2007-05-09 2007-07-18 2007-08-01 10 A 55 2007-05-09 2007-08-28 (7 row(s) affected)*/[/code] KH[spoiler]Time is always against us[/spoiler] |
 |
|