0

鉴于此表:

SubstationNo SubstationType
----------------------------
     1411             1566
     1411             135
     1422             1411
     1433             1433

如何从两个不同的列中获取不同的值作为由|一行中的符号分隔的值

需要的结果是

1411|1422|1433|1566|135|1433
4

5 回答 5

0

这将使用联合进行子选择以混合列。不确定您的 RDBMS 上是否可用。

SELECT DISTINCT * FROM
(
  SELECT SubstationNo FROM table
  UNION
  SELECT SubstationType FROM table
)
于 2013-03-13T09:44:43.607 回答
0

GROUP_CONCAT()函数将所有行连接为单个字符串。此处的查询将给出两列中的所有唯一值

SELECT  GROUP_CONCAT(
    select distinct * from (SELECT column1
    FROM tablename
    UNION
    SELECT column2
    FROM tablename) SEPARATOR '|') AS rowValue
FROM  tablename
于 2013-03-13T09:49:14.633 回答
0

如果您正在使用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

SQL 小提琴演示

于 2013-03-13T09:52:00.353 回答
0

如果您使用 MySQL,您可以使用 GROUP_CONCAT(),但比 Ajo Koshy 的方法更简单。

每列一个 GROUP_CONCAT,然后通过 CONCAT() 将它们放在一起

SELECT 
CONCAT(GROUP_CONCAT(DISTINCT column1 SEPARATOR '|'), '|', GROUP_CONCAT(DISTINCT column2 SEPARATOR '|'))
FROM yourTable

这是GROUP_CONCAT() 的手动条目。

于 2013-03-13T09:56:03.810 回答
0

如果您正在尝试这些东西,请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
于 2013-03-13T10:17:10.780 回答