SQL Serverでサブクエリを使用して2つのクエリの結果を得ようとしています。SQL Server - 2つのSQLクエリの結果を控除
私が達成しようとしているのは、「ProductX Promotion」の一部である顧客の数を計算し、「ProductX Promotion」の一部であり、過去60日間に実際にProductXを購入した顧客数を差し引くことです。これは、マーケティングのためのより良い洞察のためにProductXを購入していない登録済み顧客の数を私に与えます。
当初私はCOUNT()しか持っていなかったので、2つを引き算するのは簡単でした。現在の要件は、顧客の州および郵便番号によって細分化された数です。私は直接減算を使用することができないので、ここで問題が発生します。私は存在していないが動作しませんでした。私はJOINを試しましたが、まだ運がありません。私は解決策がかなりシンプルだが、私は考えることができないことを知っている。 はここでは、意味特定の何列に関するコメントと元のコードです
SELECT
(SELECT COUNT (DISTINCT (c.CustomerNumber))
FROM Customer c
INNER JOIN
TransactionDetail t
ON
c.CustomerNumber = t.CustomerNumber
WHERE c.ProductXPref = 1 --Indicates if Customer was part of ProductX promotion program.
AND t.TransactionDate > DATEADD(d, -60, getdate()))
-
(SELECT COUNT (DISTINCT c.CustomerNumber)
FROM Customer c
INNER JOIN
TransactionDetail t
ON
c.CustomerNumber = t.CustomerNumber
WHERE t.ProductXIndicator = 1 --Indicates if ProductX was purchased
AND t.TransactionDate > DATEADD(DD, -60, getdate())
AND c.ProductXPref = 1 --Indicates if Customer was part of ProductX promotion program.
) AS 'Column Name' INTO #TempTable1
ここで私が実装しようとしてんだよ、
SELECT
(SELECT c.Zip, c.State, COUNT (DISTINCT (c.CustomerNumber))
FROM Customer c
INNER JOIN
TransactionDetail t
ON
c.CustomerNumber = t.CustomerNumber
WHERE c.ProductXPref = 1
AND t.TransactionDate > DATEADD(d, -60, getdate())
GROUP BY c.Zip, c.State)
-
(SELECT c.Zip, c.State, COUNT (DISTINCT c.CustomerNumber)
FROM Customer c
INNER JOIN
TransactionDetail t
ON
c.CustomerNumber = t.CustomerNumber
WHERE t.ProductXIndicator = 1
AND t.TransactionDate > DATEADD(DD, -60, getdate())
AND c.ProductXPref = 1
GROUP BY c.Zip, c.State) AS 'Column Name' INTO #TempTable1
これは私が見誤りである、
メッセージ116、Level 16、State 1、Line 129 EXISTSでサブクエリが導入されていない場合、選択リストで指定できる式は1つだけです。
任意のポインタが役立ちます。ありがとう。
私はそこから挿入することをお勧めします – maSTAShuFu