【问题标题】:SQL Merge two rows with same ID but different column values in Microsoft SQLSQL合并Microsoft SQL中ID相同但列值不同的两行
【发布时间】:2017-07-27 09:17:37
【问题描述】:

当不同的行在 Microsoft sql 中具有相同的 id 但不同的列值时,我试图将它们合并为一个。我发现了关于相同需求的讨论,但在 oracle 中请参阅link

我在sql fiddle中创建了表格

例如,我有

UserId  WorkGroup

Bill    PC-money
Bill    PC-windows
Linus   PC-free
Linus   PC-open

我想看看

UserId  WorkGroup1 WorkGroup2
Bill    PC-money   PC-windows
Linus   PC-free    PC-open

我对 microsoft sql 的访问是只读的

谢谢你的想法

【问题讨论】:

  • 关键字是PIVOT。如何在 SQL Server 中透视表存在很多问题。

标签: sql-server database


【解决方案1】:
Select UserID,
Substring((Select ',' + WorkGroup  From MyTable B Where B.UserID=A.UserID For XML Path('')),2,8000) As Workgroups
From MyTable A where workgroup like '%%PC-%%'
Group By UserID

【讨论】:

【解决方案2】:
 SELECT USERID, 
 SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(WORKGROUP), ',', 1), ',', -1) AS WORKGROUP1,
 if(length(GROUP_CONCAT(WORKGROUP)) - length(replace(GROUP_CONCAT(WORKGROUP), ',', ''))>=1,  
       SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(WORKGROUP), ',', 2), ',', -1) ,
       NULL)WORKGROUP2 
FROM MyTable1
GROUP BY USERID;

您可以在这里查看SQL Fiddle Demo

考虑到每个USERID 有两个条目,你可以试试上面的查询。

【讨论】:

  • 嗨,我收到此错误“GROUP_CONTACT”不是可识别的内置函数名称。
  • 你想进入mysql吗??
  • 我真的很抱歉不是在 mysql 中,而是在 Microsoft SQL 中!我会纠正讨论。
  • @Louis-PhilippeDescamps 没关系..!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-29
  • 1970-01-01
  • 2021-03-18
  • 1970-01-01
  • 2021-12-13
  • 2023-03-15
  • 1970-01-01
相关资源
最近更新 更多