簡體   English   中英

如何將一列中的值連接起來?

[英]How to join the columns value in one column?

我有一個具有兩列關系類型的表,並且與以下內容類似,我希望所有關系類型值在其中一列中的生命中都帶有“ T”

+------------+---------+
|relationship|liveswith|
+------------+---------+
|A           |T        |
+------------+---------+
|B           |T        |
+------------+---------+
|C           |F        |
+------------+---------+

像這樣

+------------+---------+
|T           |F        |
+------------+---------+
|A B         |C        |
+------------+---------+

我嘗試使用Pivot,但在T列中只給了我一個值。 我正在使用Microsoft SQL Server 2012

您可以使用xml path('')並按如下方式使用STUFF

 create table data(relationship varchar(10),liveswith varchar(10));

 insert into data values('A','T');
 insert into data values('B','T');
 insert into data values('C','F');

 with temp_output
     as (
       SELECT  a.liveswith
              ,STUFF((SELECT  '-' + relationship
                        FROM data a1
                       WHERE a1.liveswith=a.liveswith
                     ORDER BY relationship
                        FOR XML PATH('')), 1, 1, '') AS listStr
         FROM data a
       GROUP BY a.liveswith
         )
select max(case when liveswith='T' then liststr end) as 'T'
      ,max(case when liveswith='F' then liststr end) as 'F'
 from temp_output  

+-----+---+
|  T  | F |
+-----+---+
| A-B | C |
+-----+---+

您可以使用case語句確定對錯:

SELECT
string_agg(CASE WHEN liveswith THEN relationship ELSE '' END, ' ') AS T,
string_agg(CASE WHEN NOT liveswith THEN relationship ELSE '' END, ' ') AS F
FROM foobar;

輸出:

  t   |  f
------+-----
 A B  |   C

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM