表结构 Id Name Score 1 a 11 1 b 12 1 c 13 2 a 21 2 b 22 2 c 23 3 a 31 3 b 32 3 c 33 ....
能不能实现查询过的结果这样显示: ID a b c 1 11 12 13 2 21 22 23 3 32 32 33 ....
如果不行我就在代码里转换了,如果行的请不吝赐教,谢谢。
Mark先
SELECT t.id, a = MAX(CASE t.NUM WHEN 1 THEN Score END), b = MAX(CASE t.NUM WHEN 2 THEN Score END), c = MAX(CASE t.NUM WHEN 3 THEN Score END) FROM (SELECT *, CASE WHEN [name]= 'a' THEN 1 WHEN [name]= 'b' THEN '2' ELSE '3' END AS NUM FROM table) t GROUP BY t.id
Select distinct(Id), a=(Select Score From Test Where Name='a' And Id=t.Id), b=(select Score From Test Where Name='b' And Id=t.Id), c=(select Score From Test Where Name='c' And Id=t.Id) From Test t
不过,如果数据的呈现形式与业务有关,而且执行效率允许的话,建议楼主用代码来处理
to amoxicillin1030(BOBO~菜) 你的方法可行,不过正如你所说,效率可能不高,谢谢了。
to flyzq() ( ) 你的方法运行不了啊
期待效率高的sql出现
to flyzq() ( ) 不好意思,刚才又检查了一次,是可以的,不过不知道效率如何? 谢谢
|