我有:
表的名称是";myTable";最大数值为7。
索引 | 编号 | 字母 | 日期|||
---|---|---|---|---|---|
0 | 999 | 1 | a|||
1 | 999 | 2 | a | ||
2 | 999 | 3 | a | ||
3 | 999 | 3 | b | 1999年4月1日 | |
999 | |||||
5 | 999 | 4 | b1999年6月1日|||
6 | 999 | 5 | a | 1/7/99||
7 | 888 | 1 | a|||
8 | 888 | 1 | b2/99//tr>|||
9 | 888 | 1 | c2/3/99|||
10 | 888 | 2 | a2/4/99|||
11 | 888 | 2 | b2/5/99|||
12 | 888 | 3 | a | 2/6/99||
13 | 888 | 4 | a | 1999年7月2日 |
这似乎很好用。。。?
Create Table #T([Index] Int, ID Int, Number Int, Letter Varchar(10), [Date] DateTime)
Insert Into #T([Index], ID, Number, Letter, [Date])
Values
(0 ,999 ,1 , 'a', '1/1/99'),
(1 ,999 ,2 , 'a', '1/2/99'),
(2 ,999 ,3 , 'a', '1/3/99'),
(3 ,999 ,3 , 'b', '1/4/99'),
(4 ,999 ,4 , 'a', '1/5/99'),
(5 ,999 ,4 , 'b', '1/6/99'),
(6 ,999 ,5 , 'a', '1/7/99'),
(7 ,888 ,1 , 'a', '2/1/99'),
(8 ,888 ,1 , 'b', '2/2/99'),
(9 ,888 ,1 , 'c', '2/3/99'),
(10 ,888 ,2 , 'a', '2/4/99'),
(11 ,888 ,2 , 'b', '2/5/99'),
(12 ,888 ,3 , 'a', '2/6/99'),
(13 ,888 ,4 , 'a', '2/7/99')
Select
[Index] = Row_Number() Over (Order By ID) - 1,
ID, [1], [2], [3], [4], [5], [6], [7]
From
(
Select
ID, Number = T.Number, [Date]
From
#T As T
Where
[Index] = (Select Top (1) HighestLetter.[Index]
From #T As HighestLetter
Where HighestLetter.ID = T.ID
And HighestLetter.Number = T.Number
Order By HighestLetter.Letter Desc)
) As Highest
Pivot
(
Max([Date])
For Number In ([1], [2], [3], [4], [5], [6], [7])
) As Piv