12
顧客テーブル
--------------
ID名
1 ジェームス
2 ピーター
注文表
---------------
OrderId CustId
100 1
101 1
102 2

このようなものを返すクエリを作成するにはどうすればよいですか

ID、名前、注文リスト
1、ジェームズ、「100,101」
2、ピーター、「102」

Sybaseには、使用できるLISTという関数がありましたが、SQL SERVERには同様の関数が見つかりません

4

4 に答える 4

13

してみてください:

select ID, [Name],
(select OrderID+',' from OrderTable where CustID=ID
group by OrderID for xml path('')) AS ListOfOrders
From CustomerTable
于 2012-09-15T07:09:18.417 に答える
1

以下に示すように、ユーザー定義関数を作成します

CREATE FUNCTION [dbo].[CommaSeperatedOrderIDs](@CustId INT) returns varchar(Max)
AS  
BEGIN   

DECLARE @CommaSeperatedValues VARCHAR(MAX)
SELECT @CommaSeperatedValues = COALESCE(@CommaSeperatedValues+',' , '') + OrderID
FROM OrderTable WHERE CustId = @CustId
RETURN @CommaSeperatedValues

END

その後、

select ID, [Name], ([dbo].[CommaSeperatedOrderIDs](ID)) AS ListofOrders
From CustomerTable
于 2012-09-15T07:30:58.960 に答える
0

Sheikh Haris のリンクから詳細を追加します。

このテーブルを考えると:

ここに画像の説明を入力

次のような出力を取得するには:

ここに画像の説明を入力

次の SQL を使用します。

SELECT field1,
    Substring(convert(varchar(100),
    (
    SELECT (', ' + field2)
        FROM #test t2
        WHERE t1.field1 = t2.field1
        ORDER BY field1, field2
    FOR XML PATH( '' )
                    )), 3, 1000 )
FROM #test t1
GROUP BY field1

WIDEMEMO フィールドが表示されるように、部分文字列に変換関数を追加しました (SQL Server)

于 2015-07-22T14:37:55.033 に答える
0

以下のリンクにある非常にシンプルで便利なソリューションです。

http://tejasnshah.wordpress.com/2009/02/28/sql-server-get-column-values-as-comma-seperated-list-using-xml-path-instead-of-udfs-using-sql-合体/

そのリンクに書かれている SQL クエリは画像になっているので、ここにコピーできませんでした。

于 2013-01-27T00:45:10.293 に答える