簡體   English   中英

僅顯示客戶已切換訂閱的訂單

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM