sql数据库中,如何将一个表中的多列数字合并为一列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql数据库中,如何将一个表中的多列数字合并为一列相关的知识,希望对你有一定的参考价值。
例如,表中的两字段为12,34,执行完的结果是1234
在不同的数据库有不同的方法:在mysql中是使用concat(str1,str2,...).
例:
SELECT CONCAT('My', 'S', 'QL');
结果:MySQL
oracle 使用||号.
select 'abc' || 'def' from dual;
结果:adbdef
一般情况下,我们将由不同栏位获得的资料串连在一起,每一种资料库都有提供方法来达到这个目的:
MySQL: CONCAT()
Oracle: CONCAT(), ||
SQL Server: +
其实对于非程序员,可以利用excel或是access搞定。
在excel表格中就可以实现:
D1=concatenate(a1,b1,c1);或是 D1= A1&B1&C1。
在access中,D=[A]&[B]&[C]. 参考技术A select rtrim(字段1)+ rtrim(字段2) as 字段 from 表 参考技术B select 字段一+字段二 as 新的字段名 from 表 参考技术C Select concat(trim(列名1),trim(列名2))
from 表名;
将多行合并为一列,同时用原始表中的“名称”字段替换键
【中文标题】将多行合并为一列,同时用原始表中的“名称”字段替换键【英文标题】:Merge multiple rows into a column while replacing the keys with a 'name' field from the original table 【发布时间】:2022-01-22 06:53:42 【问题描述】:我有一个连接表,其中包含“account_id”和“group id”,两者均由 GUID 表示。我正在尝试合并列,以便我们得到一个“account_id”,其中所有“group_id”都合并到一个列/行,但显示帐户和组的实际名称。
表格 帐号
account_id Name
1 Henry
2 Smith
组
Group_id Group_nameName
3 User
4 Admin
Account_Group_Join_Table
account_id group_id
1 3
1 4
2 3
期望的结果:
Name Groups
Henry Dev,User
Smith User, Admin
到目前为止的代码返回 'account_id' 和 'group_id' 分组到单行/列
select account_id,
stuff((SELECT distinct ', ' + group_id
FROM account_group_join t2
where t2.account_id = t1.account_id
FOR XML PATH('')),1,1,'') [Groups]
from account_group_join t1
group by account_id
【问题讨论】:
FOR XML PATH(''))
应该是 FOR XML PATH(''), TYPE).value('text()[1]','nvarchar(max)')
以避免 XML 转义,,1,1,''
应该是 ,1,2,''
或任何长度的分隔符
【参考方案1】:
您只需在子查询中加入您的组表,这样您就可以获得名称而不是 ID。您也可以在外部查询中从Account
中选择,避免额外加入帐户来获取名称:
SELECT a.account_id,
a.Name,
STUFF((SELECT DISTINCT ', ' + g.group_nameName
FROM account_group_join AS ag
INNER JOIN [Group] AS g
ON g.group_id = ag.group_id
WHERE ag.account_id = a.account_id
FOR XML PATH('')),1,1,'') AS [Groups]
from Account AS a;
n.b.我已将您的别名从 t1
和 t2
更改为代表我正在别名的表的东西,您会发现这更容易,尤其是在处理较大的查询时。更多阅读:Bad Habits to Kick : Using table aliases like (a, b, c) or (t1, t2, t3)
【讨论】:
以上是关于sql数据库中,如何将一个表中的多列数字合并为一列的主要内容,如果未能解决你的问题,请参考以下文章