繁体   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