[英]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.