gpt4 book ai didi

sql - 获取列中的 CSV 列表,保持列不同(SQL)

转载 作者:行者123 更新时间:2023-12-04 21:46:03 24 4
gpt4 key购买 nike

我需要帮助编写一个 SQL 查询,它可以得到我想要的结果。

我有一个文档上传功能,可以为多个位置的客户上传一个文档。表结构简单,只有5列;文件 ID、文件名、标题、说明和位置 ID。如果用户上传 3 个位置的文档,则在该表中输入 3 个条目。让我们说

FileID FileName    Title      Description      LocationID1      File1       File1      Description 1    1002      File1       File1      Description 1    214      File1       File1      Description 1    181

用户上传了 4 个位置的另一个文件,数据被输入,表格现在看起来像这样

FileID FileName    Title      Description      LocationID1      File1.doc   File1      Description 1    1002      File1.doc   File1      Description 1    214      File1.doc   File1      Description 1    1815      File2.pdf   File2      Description 2    1236      File2.pdf   File2      Description 2    127      File2.pdf   File2      Description 2    1268      File2.pdf   File2      Description 2    100

现在我想要的结果是

FileName    Title      Description      LocationCSVFile1.doc   File1      Description 1    100, 21, 181File2.pdf   File2      Description 2    123, 12, 126, 100

最佳答案

在 SQL Server 中,您可以使用 FOR XML PATH:

SELECT DISTINCT FileName,
Title,
Description,
STUFF((SELECT ', ' + cast(LocationID as varchar(20))
from yourtable m
where p.FileName = m.FileName
group by LocationID, fileid
order by fileid
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'') LocationCSV
from yourtable p

参见 SQL Fiddle with Demo

或使用 FOR XML PATH 的另一个版本:

SELECT FileName,
Title,
Description, LEFT(LocationCSV , LEN(LocationCSV)-1) LocationCSV
FROM yourtable p
CROSS APPLY
(
SELECT cast(LocationID as varchar(20)) + ','
FROM yourtable m
WHERE p.FileName = m.FileName
FOR XML PATH('')
) m (LocationCSV)
group by FileName, Title, Description, LocationCSV

参见 SQL Fiddle with Demo

结果:

|  FILENAME | TITLE |   DESCRIPTION |        LOCATIONCSV |
----------------------------------------------------------
| File1.doc | File1 | Description 1 | 100, 21, 181 |
| File2.pdf | File2 | Description 2 | 123, 12, 126, 100 |

关于sql - 获取列中的 CSV 列表,保持列不同(SQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13877673/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com