次のようなテーブルがあります。
a1 b1
a1 b2
a2 b2
a2 b3
そして、「ダミー行」を実行して、次のような結果を得たいと考えています。
a1 b1 1
a1 b2 1
a1 b3 0
a2 b1 0
a2 b2 1
a2 b3 1
JOIN を実行しましたが、テーブルに 140 万行あるので時間がかかりすぎます。
次のようなテーブルがあります。
a1 b1
a1 b2
a2 b2
a2 b3
そして、「ダミー行」を実行して、次のような結果を得たいと考えています。
a1 b1 1
a1 b2 1
a1 b3 0
a2 b1 0
a2 b2 1
a2 b3 1
JOIN を実行しましたが、テーブルに 140 万行あるので時間がかかりすぎます。
これは、SQL Server 構文を使用したアプローチでした
DECLARE @dummyTable TABLE(aValue VARCHAR(10),bValue VARCHAR(10));
INSERT INTO @dummyTable VALUES
('a1','b1')
,('a1','b2')
,('a2','b2')
,('a2','b3');
WITH DistinctA AS
(SELECT DISTINCT aValue FROM @dummyTable)
,DistinctB AS
(SELECT DISTINCT bValue FROM @dummyTable)
SELECT a.aValue
,b.bValue
,CASE WHEN EXISTS(SELECT 1
FROM @dummyTable AS dt
WHERE dt.aValue=a.aValue AND dt.bValue=b.bValue) THEN 1 ELSE 0 END AS Existing
FROM DistinctA AS a
CROSS JOIN DistinctB AS b
ORDER BY a.aValue,b.bValue