簡體   English   中英

SQL中如何將多個單元格合並為一行?

[英]How combine multiple cells into a single row in SQL?

我正在嘗試將完成的 MS Excel 工作轉換為 t-sql 代碼。 A列是我的索引。 我需要在 C 列中組合與索引 =1 關聯的值,每個值由軟中斷分隔。

在 MS Excel 中,我通過將此函數放在單元格 C2= IF(A2<>A1,B2,C1 & CHAR(10) & B2)=IF(A2<>A3,1,0) 中來實現這一點

在此處輸入圖片說明

C 列上的組合函數將連接 B 列中的值,因為第 1 列中的索引匹配。 D 列中的函數將比較 C 列中的值,直到找到唯一值。 在單元格 D5 中,B2:B5 中的注意值已連接到單個單元格中。

如果過濾 D 列中的值 = 1 的工作表,那么我能夠獲得所需的結果。

在此處輸入圖片說明

我怎樣才能在 SQL 中做到這一點?

這對我有用,但有一個警告:

DECLARE @ TABLE (No int, color VARCHAR(20))
INSERT INTO @(No, color) values

--No  color
(1  ,'blue'),
(1  ,'red'),
(1  ,'pink'),
(1  ,'yellow'),
(2  ,'blue'),
(2  ,'red'),
(2  ,'pink'),
(3  ,'yellow')

SELECT IIF(rn = 1,CAST(No as CHAR(1)), '') AS No, color
FROM (
SELECT ROW_NUMBER() OVER (PARTITION BY No ORDER BY (SELECT NULL)) AS rn,
No, color
FROM @
) _

需要注意的是 scsimon 的評論是什么。 不能保證 SQL 會按照您發布的順序返回行。

這不是一個優雅的解決方案,但它可以完成工作。 請隨時改進它。


筆記:

回車符 (13) 和換行符 (10) 在 SSMS 中不起作用。 您將能夠在 SSRS 或 Tableau 等平台中看到所需的結果。

select distinct no, 
    color = 
    Stuff((select char(13) + char(10) +t1.color 
    from test t1
    where 
    t1.No = t2.No
    for xml path (''), TYPE).value('.', 'NVARCHAR(Max)'), 1, 1,'')
from test t2

安全管理系統

  no    color
   1    blue red pink  yellow
   2    blue  red  pink 
   3    yellow

  no    color
   1    blue
        red
        pink 
        yellow
   2    blue 
        red 
        pink
   3    yellow

暫無
暫無

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

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