gpt4 book ai didi

sql - 如何在多个条件下找出相同的值并将同一列的值放在不同的列中?

转载 作者:行者123 更新时间:2023-12-05 05:42:45 26 4
gpt4 key购买 nike

我必须找出哪对国家/地区在同一日期和同一卖家的销售额相同。然后我想对其进行排序,例如同一列中的两个国家在不同的列中彼此相邻,以及日期、卖家和销售数量。

我有一张 table countries像这样:

<表类="s-表"><头>国家代码国家名称<正文>1阿根廷2巴西3秘鲁4玻利维亚

我有一个(缩短的)表 sales像这样:

<表类="s-表"><头>国家代码<日>日期 No_of_sales卖家<正文>12021-01-0117D22021-01-0148K32021-01-0119X42021-01-0122Z12021-02-0166D22021-02-0166D32021-02-0187K42021-02-0110K12021-03-0127Z22021-03-0117D32021-03-0117D42021-03-0132D

所以,在这种情况下,我的预期结果应该是:

<表类="s-表"><头><日>日期 Country_name_1Country_name_2卖家No_of_sales<正文>2021-02-01阿根廷巴西D662021-03-01巴西秘鲁D17

我已经成功地选择了正确的数据,但我没有成功地将国家/地区分成两个不同的列。

这是我的代码:

SELECT s1.date, c.country_name, s1.seller, s1.No_of_sales
FROM (sales s1
INNER JOIN
(SELECT seller, date, No_of_sales FROM sales
GROUP BY seller, date, No_of_sales
HAVING COUNT(seller) > 1) s2
ON s1.seller = s2.seller AND s1.date = s2.date AND s1.No_of_sales = s2.No_of_sales)
JOIN countries c
ON s1.Country_code = c.Country_code

提前致谢!

最佳答案

好的。这是一个建议的解决方案,考虑到只有成对的国家/地区是预期/需要的,并且只显示两个国家/地区名称列。通过在分组中使用最小值和最大值,只会选择这两个国家/地区。
(如果碰巧有两个以上的国家具有相同的日期、卖家、销售量,那么中间的将被忽略。)

SELECT distinct s1.Date
,c1.country_name Country_name_1
,c2.country_name Country_name_2
,s1.Seller, s1.No_of_sales
FROM (sales s1
INNER JOIN
(SELECT min(country_code) country1, max(country_code) country2, Seller, [Date], No_of_sales
FROM sales
GROUP BY Seller, [Date], No_of_sales
HAVING COUNT(Seller) > 1) s2
ON s1.Seller = s2.Seller AND s1.Date = s2.Date
AND s1.No_of_sales = s2.No_of_sales)
JOIN countries c1
ON s2.country1 = c1.Country_code
JOIN countries c2
ON s2.country2 = c2.Country_code

关于sql - 如何在多个条件下找出相同的值并将同一列的值放在不同的列中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71954067/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com