Sql server 返回连接的num和ordersource的最大数量
我想输出格式是Sql server 返回连接的num和ordersource的最大数量,sql-server,sql-server-2008,tsql,Sql Server,Sql Server 2008,Tsql,我想输出格式是 create table test(id int ,num numeric(10),[Ordersource] varchar(10)) insert into test (id,num,[Order])values(1,10,'s1'),(1,10,'s2'),(1,10,'s3'),(1,10,'s4'),(1,12,'s5'),(1,12,'s6'),(2,13,'s6') 希望这会有所帮助 id num ordersource 1 10 s1,s2,s3,s4
create table test(id int ,num numeric(10),[Ordersource] varchar(10))
insert into test (id,num,[Order])values(1,10,'s1'),(1,10,'s2'),(1,10,'s3'),(1,10,'s4'),(1,12,'s5'),(1,12,'s6'),(2,13,'s6')
希望这会有所帮助
id num ordersource
1 10 s1,s2,s3,s4
希望这会有所帮助
id num ordersource
1 10 s1,s2,s3,s4
另一种方法:
Declare @test table (id int ,num numeric(10),[Order] varchar(10))
Insert into @test (id,num,[Order])
Values(1,10,'s1'),(1,10,'s2'),(1,10,'s3'),(1,10,'s4'),(1,12,'s5'),(1,12,'s6'),(2,13,'s6')
;With Cte As
(
Select
X.*
,rn=Dense_Rank()over(order by cnt desc)
From (
Select
id
, num
,ordersource = Stuff((
Select ',' + Cast([Order] As Varchar(Max))
From @test t2
Where t1.id = t2.id and t1.num = t2.num
For Xml Path('')
),1,1,'')
,cnt = count(num) over(partition by id, num)
From @test t1)X
)
Select distinct id, num,ordersource
From Cte
Where rn = 1
另一种方法:
Declare @test table (id int ,num numeric(10),[Order] varchar(10))
Insert into @test (id,num,[Order])
Values(1,10,'s1'),(1,10,'s2'),(1,10,'s3'),(1,10,'s4'),(1,12,'s5'),(1,12,'s6'),(2,13,'s6')
;With Cte As
(
Select
X.*
,rn=Dense_Rank()over(order by cnt desc)
From (
Select
id
, num
,ordersource = Stuff((
Select ',' + Cast([Order] As Varchar(Max))
From @test t2
Where t1.id = t2.id and t1.num = t2.num
For Xml Path('')
),1,1,'')
,cnt = count(num) over(partition by id, num)
From @test t1)X
)
Select distinct id, num,ordersource
From Cte
Where rn = 1
你的结果集没有任何意义!!!然后,对输出的期望是什么?对不起,一个表有三列id,num,顺序id和num列在表中重复一次,并且顺序源不同。我希望结果集删除重复项,因为每个id都希望返回数字的最大出现次数及其以逗号分隔的顺序。我需要将每个id的顺序值唯一地串联起来,以获得数字的最大出现次数,即此处对于id 1,它必须单独返回数字10。输出必须是1 10 s1、s2、s3、s4。它不应返回12,因为10是最大发生次数。您的结果集没有任何意义!!!然后,对输出的期望是什么?对不起,一个表有三列id,num,顺序id和num列在表中重复一次,并且顺序源不同。我希望结果集删除重复项,因为每个id都希望返回数字的最大出现次数及其以逗号分隔的顺序。我需要将每个id的顺序值唯一地串联起来,以获得数字的最大出现次数,即此处对于id 1,它必须单独返回数字10。输出必须是110 s1,s2,s3,s4。它不应该返回12,因为10是最大发生率。tanx,结果必须是110 s1,s2,s3,s4。它不应该返回12 bcoz。我的情况是,它必须只返回最大发生率。tanx,结果必须是110 s1,s2,s3,s4它不应该返回12 bcoz我的情况是它必须只返回最大发生次数。