Jon*_*nas 4 sql sql-server combinations
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
Run Code Online (Sandbox Code Playgroud)
我想要的结果是这样的
Count Art1 Art2 Art3
3 A B
1 C D
1 A B C
Run Code Online (Sandbox Code Playgroud)
这是一种方法:
以下是查询
--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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |