2

希望どおりの結果が得られる SQL クエリを作成するのに助けが必要です。

複数の場所にあるクライアントのためにドキュメントをアップロードできるドキュメント アップロード機能があります。テーブル構造は単純で、5 つの列しかありません。FileID、FileName、Title、Description、および LocationID。ユーザーが 3 つの場所のドキュメントをアップロードすると、このテーブルに 3 つのエントリが入力されます。まあ言ってみれば

FileID ファイル名 タイトル 説明 LocationID
1 ファイル1 ファイル1 説明 1 100
2 ファイル1 ファイル1 説明 1 21
4 ファイル 1 ファイル 1 説明 1 181

ユーザーが 4 つの場所の別のファイルをアップロードすると、データが入力され、テーブルは次のようになります。

FileID ファイル名 タイトル 説明 LocationID
1 File1.doc File1 説明 1 100
2 File1.doc File1 説明 1 21
4 File1.doc File1 説明 1 181
5 File2.pdf File2 説明 2 123
6 File2.pdf File2 説明 2 12
7 File2.pdf File2 説明 2 126
8 File2.pdf File2 説明 2 100

今私が結果に欲しいのは

ファイル名 タイトル 説明 場所CSV
File1.doc File1 説明 1 100、21、181
File2.pdf File2 説明 2 123、12、126、100
4

3 に答える 3

5

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 FiddlewithDemoを参照してください

または使用する別のバージョン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 FiddlewithDemoを参照してください

結果:

|  FILENAME | TITLE |   DESCRIPTION |        LOCATIONCSV |
----------------------------------------------------------
| File1.doc | File1 | Description 1 |       100, 21, 181 |
| File2.pdf | File2 | Description 2 |  123, 12, 126, 100 |
于 2012-12-14T11:35:07.650 に答える
3

MySQL ではGROUP_CONCATを使用できます

select FileName,
       Title,
       Description, 
       group_concat(LocationID) as  LocationCSV 
from t group by FileName,Title,Description
于 2012-12-14T11:25:45.933 に答える
0

Bradcの答えを見てください。私はこのメソッドが列を連結するのが好きです。

Microsoft SQL Server2005でgroup_concatMySQL関数をシミュレートしますか?

于 2012-12-14T11:39:17.817 に答える