ProductとPricingの 2 つのテーブルがあります。Table Productは親テーブルで、Pricingは子テーブルです。Product の外部キーを使用してテーブル B にクエリを実行すると、データの有無にかかわらず、各外部キーに対して正確に 11 行を生成したいと考えています (すべての空の行と列を null で埋めます)。
以下は、私がこれまでに持っているもののサンプルです。正しく機能しませんが、基本的に私の目標は、ProductID ごとに 11 行を生成し、空の行の列を null 値で埋めることです
SELECT TOP 11
row_number() over(order by TheCount desc) AS row_num, PRODID, packageID
FROM
(
select count(*) AS TheCount , PRODID ,max(PricingID) AS packageID
from
Product left outer join Pricing on PRODID = ProductID
group by PRODID
UNION ALL
SELECT TOP 11 -1, NULL, NULL, NULL, NULL, NUK
FROM sys.columns
) T
例えば
row_num PRODID PRICINGID COSBeginQty COSColCode COSTrade COSTypeOfPrice COSIsActive
1 A10D8642-F6DA-499E-9FC9-024FED104877 F82F533E-C1A0-4DC5-BB2C-06FFF2E59C18 2 NULL T2 A 1
2 A10D8642-F6DA-499E-9FC9-024FED104877 372E6B36-F9D1-4EFA-8A15-08CE673EFFBA 12 NULL T1 A 1
3 A10D8642-F6DA-499E-9FC9-024FED104877 45E77A6F-DC2A-44BF-B6AE-0BE27BD2205F 7 NULL T2 A 1
4 A10D8642-F6DA-499E-9FC9-024FED104877 NULL NULL NULL NULL NULL NULL
5 A10D8642-F6DA-499E-9FC9-024FED104877 NULL NULL NULL NULL NULL NULL
6 A10D8642-F6DA-499E-9FC9-024FED104877 NULL NULL NULL NULL NULL NULL
7 A10D8642-F6DA-499E-9FC9-024FED104877 NULL NULL NULL NULL NULL NULL
8 A10D8642-F6DA-499E-9FC9-024FED104877 NULL NULL NULL NULL NULL NULL
9 A10D8642-F6DA-499E-9FC9-024FED104877 NULL NULL NULL NULL NULL NULL
10 A10D8642-F6DA-499E-9FC9-024FED104877 NULL NULL NULL NULL NULL NULL
11 A10D8642-F6DA-499E-9FC9-024FED104877 NULL NULL NULL NULL NULL NULL
これは、データと、11行に拡張するように拡張しようとしている作業中のクエリを示すSQLFiddle Linkです。つまり、11行を列として表示します。
Damiens のサンプル コードを使用して、以下のコードをまとめることができました。製品テーブルの要素を Pricing テーブルに相互適用することは機能しますが、同じ PricingID を製品テーブルのすべての ProductID に適用するのではなく、価格レコードが適用される特定の ProductId のみに適用する場合を好みます。 .