首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请问个有关问题 急

2012-12-17 
请教个问题 急急急如图,想实现如下效果medcodemednamewmedposition3Y00090077银丹脑通软胶囊421,422,423,4

请教个问题 急急急


如图,想实现如下效果
medcode        medname            wmedposition
3Y00090077     银丹脑通软胶囊     421,422,423,424,425
1T00080061     头孢克洛咀嚼片     581,597,613,629,645
[最优解释]

select a.medcode ,a.medname   
stuff((select ','+wmedposition from tb b 
       where b.medcode=a.medcode and b.medname=a.medname 
       for xml path('')),1,1,'') 'wmedposition'
from tb a
group by  a.medcode ,a.medname
            
[其他解释]
--> 测试数据:#tb
IF OBJECT_ID('TEMPDB.DBO.#tb') IS NOT NULL DROP TABLE #tb
GO 
CREATE TABLE #tb([medcode] VARCHAR(10),[medname] VARCHAR(14),[wmedposition] INT)
INSERT #tb
SELECT '3Y00090077','银丹脑通软胶囊',421 UNION ALL
SELECT '3Y00090077','银丹脑通软胶囊',422 UNION ALL
SELECT '3Y00090077','银丹脑通软胶囊',423 UNION ALL
SELECT '3Y00090077','银丹脑通软胶囊',424 UNION ALL
SELECT '3Y00090077','银丹脑通软胶囊',425 UNION ALL
SELECT '1T00080061','头孢克洛咀嚼片',581 UNION ALL
SELECT '1T00080061','头孢克洛咀嚼片',597 UNION ALL
SELECT '1T00080061','头孢克洛咀嚼片',613 UNION ALL
SELECT '1T00080061','头孢克洛咀嚼片',629 UNION ALL
SELECT '1T00080061','头孢克洛咀嚼片',645
--------------开始查询--------------------------

SELECT medcode,medname,
STUFF((SELECT ','+LTRIM(wmedposition) FROM  #tb WHERE medcode=t.medcode AND  medname=t.medname FOR XML PATH('')),1,1,'')
FROM #tb AS t
GROUP BY medcode,medname
----------------结果----------------------------
/* 
medcodemedname(无列名)
1T00080061头孢克洛咀嚼片581,597,613,629,645
3Y00090077银丹脑通软胶囊421,422,423,424,425
*/

[其他解释]
select medcode,medname
       wmedposition=stuff((select ','+wmedposition from tb 
        where medcode=a.medcode and medname=a.medname for xml path('')),1,1,'')
from tb group by medcode,medname
[其他解释]

SELECT medcode,medname,
STUFF((SELECT ','+LTRIM(wmedposition) FROM  TB WHERE medcode=t.medcode AND  medname=t.medname),1,1,'')
FROM TB AS t
GROUP BY medcode,medname

[其他解释]
搜下 行转列
[其他解释]
引用:
SQL code?123456789101112131415161718192021222324252627--> 测试数据:#tbIF OBJECT_ID('TEMPDB.DBO.#tb') IS NOT NULL DROP TABLE #tbGO CREATE TABLE #tb([medcode] VARCHAR(10),[medname] VARCHAR(14),……

代码高亮怎么这么丑呢?


[其他解释]

引用:
SQL code?123456select a.medcode ,a.medname   stuff((select ','+wmedposition from tb b        where b.medcode=a.medcode and b.medname=a.medname        for xml path('')),1,1,'') 'wmedpositi……
  忘记说了 wmedposition 是int怎么弄。。
[其他解释]
INT和逗号一起的话就会转换成字符串。
[其他解释]
OK 没问题了 结贴
[其他解释]
各位都拼老命了呢
万一楼主用的sql2000,惨了,运行出错

热点排行