gpt4 book ai didi

SQL 组按动态列数排序的项目计数

转载 作者:行者123 更新时间:2023-12-03 02:16:08 26 4
gpt4 key购买 nike

SQL Server 2012。我想知道是否有人能解决我遇到的这个问题。

我想找到人们订购的文章的所有不同组合。我对这个人是否购买了 A 和 B 以及另一个订购了 B 和 A 不感兴趣。我希望列数是动态的。订单的最大行数。

订单示例

Order   Row Art
1 1 A
1 2 B
1 3 C
2 1 A
2 2 B
3 1 C
3 2 D
4 1 A
4 2 B
5 1 B
5 2 A

而我想要的结果是这样的

Count   Art1    Art2    Art3
3 A B
1 C D
1 A B C

最佳答案

这是一种方法:

  • 首先获取一列中的所有产品(按顺序排列)
  • 第二次按此列对它们进行分组以获取计数
  • 按列分隔

下面是查询

--Create table t1 ([order] int, row int, art varchar(30))

--insert into t1 values
--(1,1,'A'),
--(1,2,'B'),
--(1,3,'C'),
--(2,1,'A'),
--(2,2,'B'),
--(3,1,'C'),
--(3,2,'D'),
--(4,1,'A'),
--(4,2,'B'),
--(5,1,'B'),
--(5,2,'A')

select
count(1) as [count],
articles,
max(numberOfArticles) as numberOfArticles
from
(
select
[order],
count(1) as numberOfArticles,
Stuff(
(
SELECT
',' + art
FROM t1 AS i
WHERE i.[order]=o.[order]
ORDER by art asc
FOR XML PATH ('')
),
1, 1, '') as articles
from t1 o
group by [order]
)t
group by articles

--drop table t1

输出: enter image description here

关于SQL 组按动态列数排序的项目计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42850459/

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