我正在 SQL Server 中尝试创建客户优惠券组合,但没有成功。原始数据如下所示:
表格一直持续到 100 行,它由 10 个不同的客户和 10 个不同的优惠券组合而成。
想要的结果应该是这样的:
到目前为止,我的尝试还没有结束,我使用的是 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
谢谢!
答案 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;