日期:2014-05-19  浏览次数:20654 次

怎么取得如下数据?
假如表T有三列

A             B               C
1             'b '           'c '
1             'a '           'a '  
1             'c '           'b '
2             'd '           'f '
2             'e '           'a '

如果要按A列来分组,   分组后取各组的任一行,
结果类似如下:
A             B               C
1             'b '           'c '
2             'd '           'f '

请问该SQL语句该怎么写?     谢谢.
 


------解决方案--------------------
kafuwei(你给了国家什么) ( ) 信誉:100 Blog 2007-03-13 16:37:50 得分: 0


SELECT A,MAX(B),MAX(C)
FROM T
GROUP BY A
ORDER BY A

或者用min函数等都可以。


------------
這種寫法有問題,這樣得到的B C很有可能不是同一行的數據。

如果表中沒有關鍵字,借用下臨時表。

Select ID = Identity(Int, 1, 1), * Into #T From T
Select A, B, C From #T Where ID In (Select Min(ID) From #T)
Drop Table #T

------解决方案--------------------
呵呵,抱歉,没看清,正解见下面:

SELECT A,
LEFT(MAX(B + '. ' + C), CHARINDEX( '. ', MAX(B + '. ' + C), 1) - 1) AS BB,
RIGHT(MAX(B + '. ' + C), LEN(MAX(B + '. ' + C)) - CHARINDEX( '. ', MAX(B + '. ' + C), 1)) AS CC
FROM T
GROUP BY A
ORDER BY A

如果不是字符型的话转换成字符型就可以了。