如何创建客户优惠券组合

时间:2021-01-21 09:21:12

标签: sql sql-server tsql

我正在 SQL Server 中尝试创建客户优惠券组合,但没有成功。原始数据如下所示:

raw data

表格一直持续到 100 行,它由 10 个不同的客户和 10 个不同的优惠券组合而成。

想要的结果应该是这样的:

desired result

到目前为止,我的尝试还没有结束,我使用的是 row_number 和下一个脚本:

WITH cte AS
(
    SELECT 
        customer_id, coupon,
        ROW_NUMBER() OVER (PARTITION BY coupon ORDER BY customer_id) rnk 
    FROM #temp
)
SELECT * 
FROM cte 
WHERE rnk = 1

enter image description here

谢谢!

1 个答案:

答案 0 :(得分:0)

我最好的猜测是,如果我在两行之间正确阅读,那就是使用几个 DENSE_RANK。但这并未经过测试,因为数据图像无法帮助我们为您提供帮助,因为我们无法从中复制文本/数据:

SELECT DISTINCT
       sq1.CustomerID
       sq2.coupon
FROM (SELECT YT.CustomerID,
             DENSE_RANK() OVER (ORDER BY YT.CustomerID) AS DR
      FROM dbo.YourTable YT) sq1
     JOIN (SELECT YT.Coupon,
             DENSE_RANK() OVER (ORDER BY YT.Coupon) AS DR
           FROM dbo.YourTable YT) sq2 ON sq1.DR = sq2.DR;