0

重複の可能性:
SQL Server の列ごとのグループと共にカンマ区切りで集計結果を取得する SQL クエリ

次の2つのテーブルがあります。

CarID | CarName  | Color  
------+----------+----------
1     | Ford     | White  
2     | Mitsu    | Black  
3     | Mitsu    | Green  

OwnerID | OwnerName | CarID  
--------+-----------+-------
1       | John      | 1  
1       | John      | 3  
2       | Mark      | 2  

そして、次のレポートが必要です。

CarName | Owners  
--------+------------
Ford    | John  
Mitsu   | John, Mark  

どうすればそれができますか?

4

1 に答える 1

4

次のようなデータベース レベルで正しいデータセットを作成するのが最も簡単です。

SELECT
    c.CarName,
    STUFF
    (
        (
            SELECT ',' + owner
            FROM Owner o
            WHERE c.carID = o.carID
            ORDER BY owner
            FOR XML PATH('')
        ), 1, 1, ''
    ) AS owners
FROM Car c

これにより、車と色の組み合わせごとに 1 つの行が返されるため、考慮すべきもう 1 つの点は、色を無視するかどうかです。次に、車の名前でグループ化する必要があります。

SELECT
    c.CarName,
    STUFF
    (
        (
            SELECT ',' + owner
            FROM (select cd.carname, o.owner from Owner o inner join Car cd on o.carID = cd.carID) o
            WHERE c.CarName = o.CarName
            ORDER BY owner
            FOR XML PATH('')
        ), 1, 1, ''
    ) AS owners
FROM (select distinct carname from Car) c

正しいデータセットを取得したら、結果を表示する単純なテーブルを作成するだけです。

于 2013-01-18T11:17:23.437 に答える