テーブルのレコードを返す必要があり、結果セットにカンマ区切りのリストを含める必要があります。カンマで区切られた結果セットを持つSQLサーバのサブクエリ
私は3つのテーブルの画像を添付しました。私は最初のテーブルのレコードを返すselectを実行し、スクリーンショットの3番目のテーブルに存在するAwardFocusNameの最後を含める必要があります。
私の結果セットは1つのレコードを返し、その中にAwardFocusNamesのリストを(カンマで区切って)含めます。
テーブルのレコードを返す必要があり、結果セットにカンマ区切りのリストを含める必要があります。カンマで区切られた結果セットを持つSQLサーバのサブクエリ
私は3つのテーブルの画像を添付しました。私は最初のテーブルのレコードを返すselectを実行し、スクリーンショットの3番目のテーブルに存在するAwardFocusNameの最後を含める必要があります。
私の結果セットは1つのレコードを返し、その中にAwardFocusNamesのリストを(カンマで区切って)含めます。
ここで私はこれを行う方法を説明し、私は似たもの
SELECT n.nominationID , SUBSTRING(( SELECT ',' + af.awardFocusName FROM NominationAwardFocus naf JOIN AwardFocus af ON naf.awardFocusID = af.awardFocusID WHERE n.nominationID = naf.nominationID FOR XML PATH('') ), 2, 1000000) FROM Nomination n
私は最善の解決策は、カンマ区切りのリストに値(グループ内)を連結するユーザー定義集計を作成することだと思います。 http://msdn.microsoft.com/en-us/library/ms131056.aspx
使用法:
SELECT
Nomination.NominationId,
Nomination.Created,
Nomination.Updated,
dbo.Concatenate(AwardFocus.AwardFocusName) As Names
FROM
Nomination
JOIN NominationAwardFocus
ON Nomination.NominationId = NominationAwardFocus.NominationId
JOIN AwardFocus
ON NominationAwardFocus.AwardFocusId = AwardFocus.AwardFocusId
GROUP BY
Nomination.NominationId,
Nomination.Created,
Nomination.Updated
を行うために過去に使用したトリックだで例1 を参照してください。私のブログは、ここに:
http://johniekarr.wordpress.com/2011/08/08/pushing-multiple-results-into-one-column/
テーブル名は何ですか?この
CREATE FUNCTION [dbo].[CreateCSV](
@Id AS INT
)
RETURNS VARCHAR(MAX)
AS
BEGIN
Declare @lst varchar(max)
select @lst = isnull(@lst+',','')+AF.AwardFocusName
from AwardFocus as AF
inner join AwardFoccusNomination as AFN
on AF.AwardFocusID = AFN.AwardFocusID
where [email protected]
return @lst
END
のようなスカラー値関数を作成しますか。 – ManseUK
テーブル名は、ノミネート、AwardFocus、ノミネートアワードフォーカス(スクリーンショットに表示されている順)です。 – obautista