请教个问题 急急急

早安您好 2012-11-16 10:08:22


如图,想实现如下效果
medcode medname wmedposition
3Y00090077 银丹脑通软胶囊 421,422,423,424,425
1T00080061 头孢克洛咀嚼片 581,597,613,629,645
...全文
143 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
IEEE_China 2012-11-16
  • 打赏
  • 举报
回复
各位都拼老命了呢 万一楼主用的sql2000,惨了,运行出错
發糞塗牆 2012-11-16
  • 打赏
  • 举报
回复
INT和逗号一起的话就会转换成字符串。
早安您好 2012-11-16
  • 打赏
  • 举报
回复
OK 没问题了 结贴
早安您好 2012-11-16
  • 打赏
  • 举报
回复
引用 2 楼 DBA_Huangzj 的回复:
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怎么弄。。
黄_瓜 2012-11-16
  • 打赏
  • 举报
回复
引用 5 楼 Beirut 的回复:
SQL code?123456789101112131415161718192021222324252627--> 测试数据:#tbIF OBJECT_ID('TEMPDB.DBO.#tb') IS NOT NULL DROP TABLE #tbGO CREATE TABLE #tb([medcode] VARCHAR(10),[medname] VARCHAR(14),……
代码高亮怎么这么丑呢?
黄_瓜 2012-11-16
  • 打赏
  • 举报
回复
--> 测试数据:#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
----------------结果----------------------------
/* 
medcode	medname	(无列名)
1T00080061	头孢克洛咀嚼片	581,597,613,629,645
3Y00090077	银丹脑通软胶囊	421,422,423,424,425
*/
黄_瓜 2012-11-16
  • 打赏
  • 举报
回复

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
快溜 2012-11-16
  • 打赏
  • 举报
回复
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
發糞塗牆 2012-11-16
  • 打赏
  • 举报
回复
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
IEEE_China 2012-11-16
  • 打赏
  • 举报
回复
搜下 行转列

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧