鉴于此表:
SubstationNo SubstationType
----------------------------
1411 1566
1411 135
1422 1411
1433 1433
如何从两个不同的列中获取不同的值作为由|
一行中的符号分隔的值
需要的结果是
1411|1422|1433|1566|135|1433
鉴于此表:
SubstationNo SubstationType
----------------------------
1411 1566
1411 135
1422 1411
1433 1433
如何从两个不同的列中获取不同的值作为由|
一行中的符号分隔的值
需要的结果是
1411|1422|1433|1566|135|1433
这将使用联合进行子选择以混合列。不确定您的 RDBMS 上是否可用。
SELECT DISTINCT * FROM
(
SELECT SubstationNo FROM table
UNION
SELECT SubstationType FROM table
)
GROUP_CONCAT()
函数将所有行连接为单个字符串。此处的查询将给出两列中的所有唯一值
SELECT GROUP_CONCAT(
select distinct * from (SELECT column1
FROM tablename
UNION
SELECT column2
FROM tablename) SEPARATOR '|') AS rowValue
FROM tablename
如果您正在使用
SQL Server
,那么您可以这样做:
;WITH CTE
AS
(
SELECT SubstationNo AS COL FROM Table1
UNION
SELECT SubstationType AS COL FROM Table1
)
SELECT DISTINCT
STUFF((
SELECT '|'+ CAST(COL AS VARCHAR(50))
FROM CTE
FOR XML PATH ('')),1,1,'')
FROM TABLE1
如果您使用 MySQL,您可以使用 GROUP_CONCAT(),但比 Ajo Koshy 的方法更简单。
每列一个 GROUP_CONCAT,然后通过 CONCAT() 将它们放在一起
SELECT
CONCAT(GROUP_CONCAT(DISTINCT column1 SEPARATOR '|'), '|', GROUP_CONCAT(DISTINCT column2 SEPARATOR '|'))
FROM yourTable
如果您正在尝试这些东西,请SQL SERVER
尝试如下所示..它会对您有所帮助..
SELECT DISTINCT
STUFF((
SELECT '|'+ CAST(SubStation AS VARCHAR(50))
FROM (SELECT DISTINCT SubstationNo SubStation
FROM TableName
UNION
SELECT DISTINCT SubstationType as SubStation
FROM TableName) res
FOR XML PATH ('')),1,1,'') as SubStation
FROM TableName