[英]Displaying only only orders where Customer has switched subscriptions
我正在查詢一個Orders數據庫,以顯示哪些客戶將訂閱從高成本訂閱切換到了低成本訂閱。
每個月,對訂閱進行計費並創建新記錄。
我正在尋找的是這樣的東西,但對於購買了AAAA和BBBB訂閱的所有客戶:
PRODUCT CODE: CUSTOMER NAME: BILL DATE:
AAAA Joey P. 2018-01-01
AAAA Joey P. 2018-02-01
BBBB Joey P. 2018-03-01
BBBB Joey P. 2018-04-01
在上述情況下,客戶在兩個月后轉而使用便宜的訂閱。
我想查詢該表以包括所有切換訂閱級別的客戶。 但是,我被困在只能向購買者展示兩種產品代碼的情況下。 我的查詢當前選擇購買了一種或兩種產品的所有客戶。
SELECT DISTINCT [productcode] AS "PRODUCT CODE"
,[customername] AS "CUSTOMER NAME"
,[billdate] AS "BILL DATE"
FROM mydatabase
WHERE YEAR([billdate]) > 2017
AND ([productcode] = 'AAAA' OR [productcode] = 'BBBB')
我嘗試過沒有成功的自我加入。
請嘗試以下方法:
;WITH [Data] AS (
SELECT m.customername,m.productcode,m.billdate
FROM mydatabase m
WHERE YEAR(m.[billdate]) > 2017
AND m.productcode IN ('AAAA','BBBB')
)
SELECT d.productcode AS [PRODUCT CODE]
,d.customername AS [CUSTOMER NAME]
,d.billdate AS [BILL DATE]
FROM (
SELECT m.customername
FROM [Data] m
GROUP BY m.customername
HAVING MAX(m.productcode) <> MIN(m.productcode)
) a
INNER JOIN [Data] d ON d.customername = a.customername
;
如果您只想切換客戶 ,則可以使用聚合並having
:
SELECT customername
FROM mydatabase
WHERE YEAR([billdate]) > 2017 AND productcode IN ('AAAA', 'BBBB')
GROUP BY customername
HAVING COUNT(DISTINCT productcode) = 2;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.