我想在SQL Server中使用子查詢的兩個查詢的結果。SQL Server - 減去兩個SQL查詢的結果
我想要實現的是計算屬於「ProductX Promotion」一部分的客戶數量,並減去屬於「ProductX Promotion」的客戶數量,並在過去60天內實際購買了ProductX。這給了我沒有購買ProductX的註冊客戶的數量,以獲得更好的營銷洞察力。
最初我只有COUNT(),因此很容易將這兩個數相減。現在需求是按客戶的狀態和Zip級別細分計數。問題出現在這裏,因爲我不能使用直接減法,我嘗試不存在,但沒有工作,我嘗試了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,級別16,狀態1,行129 子查詢未與EXISTS一起引入時,只能在選擇列表中指定一個表達式。
任何指針都會有所幫助。謝謝。
只能使用,如果有從..我建議做一個插入到 – maSTAShuFu