select 企业名称,进口原料种类 from 表 tem group by 企业名称,进口原料种类 having sum(价值) in (select top 3 sum(价值) from 表 where 企业名称=tem.企业名称 group by 进口原料种类 order by sum(价值) desc)
是把表名另取名为tem , select 企业名称 , 进口原料种类 , top 3 sum(价值) as 价值 from 表 group by 进口原料种类 ,企业名称 order by 价值
order by 价值 后加 desc
declare @表 table (企业名称 varchar(10),进口原料种类 varchar(10),价值 int) insert @表 values('a','class1',100) insert @表 values('a','class2',200) insert @表 values('a','class1',1000) insert @表 values('a','class2', 146) insert @表 values('a','class3',10000) insert @表 values('b','class1',1000) insert @表 values('b','class3', 100) insert @表 values('b','class3',135) insert @表 values('c','class3',444) insert @表 values('c','class3',3000) insert @表 values('c','class4',364) select 企业名称,进口原料种类,sum(价值) 结果 from @表 tem group by 企业名称,进口原料种类 having sum(价值) in (select top 3 sum(价值) from @表 where 企业名称=tem.企业名称 group by 进口原料种类 order by sum(价值) desc) order by 企业名称,sum(价值) desc---tem是别名
和和: tem是你的表名,就是select的from中的子句带的表的别名。使用起来就象直接使用表名一样,但方便而且遇到多次对该表进行操作的时候更是必须的。select * from 表 a where 价值 in (select top 3 价值 from (Select 企业名称,进口原料种类,Sum(价值) as 价值 from 表 group by 企业名称,进口原料种类) b where b.企业名称=a.企业名称 order by b.价值 desc)
Select 企业名称,进口原料种类,Sum(价值) 价值 Into #T From YourTable Group By 企业名称,进口原料种类 Order By 企业名称,进口原料种类,价值 DESC Select RowID = Identity(int,0,1),企业名称,进口原料种类,价值 Into #T1 From #T Select 企业名称,GrpCnt = Count(*),GrpMinRowID = Min(RowID) Into #T2 From #T1 Group By 企业名称 Select #T1.企业名称,#T1.进口原料种类,#T1.价值 From #T1 Inner Join #T2 On #T1.企业名称 = #T2.企业名称 Where (#T1.RowID - #T2.GrpMinRowID)%GrpCnt < 3 Drop Table #T,#T1,#T2
select 企业名称,进口原料种类,sum(价值) 结果 from @表 as tem group by 企业名称,进口原料种类 having sum(价值) in (select top 3 sum(价值) from @表 where 企业名称=tem.企业名称 and 进口原料种类=tem.进口原料种类 group by 企业名称,进口原料种类 order by sum(价值) desc ) order by 企业名称,进口原料种类
以上方法我都试过了,怎么不行啊 我需要的是每一家企业的进口原料的前三名 求出来的结果却不是这样 假如表名是temp 我写的是 select ownername,g_name,sum(trade_total) 结果 from #temp as tem group by ownername,g_name having sum(trade_total) in (select top 3 sum(trade_total) from #temp where ownername=tem.ownername and g_name=tem.g_name group by ownername,g_name order by sum(trade_total) desc ) order by ownername,g_name还是我理解错了? 谢谢
select 企业名称, 进口原料种类, sum(价值) 价值 into #t from table1 group by 企业名称, 进口原料种类 goselect * from #t A where 价值 in (select top 3 价值 from #t where 企业名称=A.企业名称 order by 价值 desc) order by 企业名称, 价值 desc
select * from (select 企业名称, 进口原料种类, sum(价值) 价值 from table1 group by 企业名称, 进口原料种类) A where 价值 in (select top 3 价值 from (select 企业名称, 进口原料种类, sum(价值) 价值 from table1 group by 企业名称, 进口原料种类) where 企业名称=A.企业名称 order by 价值 desc) order by 企业名称, 价值 desc
这个问题有点意思。刚刚建了一个表,不过数据和题目的略有不同为了检验一下适应性, 我在企业c做了5条价值一样,但产品类型不一样的数据凡是用“having sum(价值) in ”这样的方法做的,得出来的C企业的数据都会是多过三条 triout(笨牛)的方法也是错的 rdsdh(方人也)做得倒是对的:),不过好象略有点麻烦,还要用到临时表,不知道还有没有更好的办法
我试过了,tj_dns(愉快的登山者) 是对的,不过要改一个小地方。select * from (select 企业名称, 进口原料种类, sum(价值) 价值 from table1 group by 企业名称, 进口原料种类) A where 价值 in (select top 3 价值 from (select 企业名称, 进口原料种类, sum(价值) 价值 from table1 group by 企业名称, 进口原料种类) B where 企业名称=A.企业名称 order by 价值 desc) order by 企业名称, 价值 desc
select * from (select 企业名称, 进口原料种类, sum(价值) 价值 from table1 group by 企业名称, 进口原料种类) A where 价值 in (select top 3 价值 from (select 企业名称, 进口原料种类, sum(价值) 价值 from table1 group by 企业名称, 进口原料种类) B where 企业名称=A.企业名称 order by 价值 desc) order by 企业名称, 价值 desc
select top *3 from 表 where 企业名称=a and 企业名称=b and 企业名称=c
同企业的同类原料要求和的,
还有tem是什么,
可不可以详细一点?
select 企业名称 , 进口原料种类 , top 3 sum(价值) as 价值 from 表 group by 进口原料种类 ,企业名称 order by 价值
insert @表 values('a','class1',100)
insert @表 values('a','class2',200)
insert @表 values('a','class1',1000)
insert @表 values('a','class2', 146)
insert @表 values('a','class3',10000)
insert @表 values('b','class1',1000)
insert @表 values('b','class3', 100)
insert @表 values('b','class3',135)
insert @表 values('c','class3',444)
insert @表 values('c','class3',3000)
insert @表 values('c','class4',364)
select 企业名称,进口原料种类,sum(价值) 结果 from @表 tem group by 企业名称,进口原料种类 having sum(价值) in (select top 3 sum(价值) from @表 where 企业名称=tem.企业名称 group by 进口原料种类 order by sum(价值) desc) order by 企业名称,sum(价值) desc---tem是别名
tem是你的表名,就是select的from中的子句带的表的别名。使用起来就象直接使用表名一样,但方便而且遇到多次对该表进行操作的时候更是必须的。select * from 表 a where 价值 in (select top 3 价值 from (Select 企业名称,进口原料种类,Sum(价值) as 价值 from 表 group by 企业名称,进口原料种类) b where b.企业名称=a.企业名称 order by b.价值 desc)
From YourTable
Group By 企业名称,进口原料种类
Order By 企业名称,进口原料种类,价值 DESC
Select RowID = Identity(int,0,1),企业名称,进口原料种类,价值 Into #T1
From #T
Select 企业名称,GrpCnt = Count(*),GrpMinRowID = Min(RowID) Into #T2
From #T1
Group By 企业名称
Select #T1.企业名称,#T1.进口原料种类,#T1.价值 From #T1 Inner Join #T2
On #T1.企业名称 = #T2.企业名称
Where (#T1.RowID - #T2.GrpMinRowID)%GrpCnt < 3
Drop Table #T,#T1,#T2
from @表 as tem
group by 企业名称,进口原料种类
having sum(价值) in (select top 3 sum(价值)
from @表
where 企业名称=tem.企业名称 and 进口原料种类=tem.进口原料种类
group by 企业名称,进口原料种类
order by sum(价值) desc )
order by 企业名称,进口原料种类
我需要的是每一家企业的进口原料的前三名
求出来的结果却不是这样
假如表名是temp
我写的是
select ownername,g_name,sum(trade_total) 结果
from #temp as tem
group by ownername,g_name
having sum(trade_total) in (select top 3 sum(trade_total)
from #temp
where ownername=tem.ownername and g_name=tem.g_name
group by ownername,g_name
order by sum(trade_total) desc )
order by ownername,g_name还是我理解错了?
谢谢
goselect * from #t A where 价值 in
(select top 3 价值 from #t where 企业名称=A.企业名称 order by 价值 desc)
order by 企业名称, 价值 desc
(select 企业名称, 进口原料种类, sum(价值) 价值
from table1 group by 企业名称, 进口原料种类) A where 价值 in
(select top 3 价值 from
(select 企业名称, 进口原料种类, sum(价值) 价值
from table1 group by 企业名称, 进口原料种类) where 企业名称=A.企业名称 order by 价值 desc)
order by 企业名称, 价值 desc
我在企业c做了5条价值一样,但产品类型不一样的数据凡是用“having sum(价值) in ”这样的方法做的,得出来的C企业的数据都会是多过三条 triout(笨牛)的方法也是错的 rdsdh(方人也)做得倒是对的:),不过好象略有点麻烦,还要用到临时表,不知道还有没有更好的办法
(select 企业名称, 进口原料种类, sum(价值) 价值
from table1 group by 企业名称, 进口原料种类) A where 价值 in
(select top 3 价值 from
(select 企业名称, 进口原料种类, sum(价值) 价值
from table1 group by 企业名称, 进口原料种类) B where 企业名称=A.企业名称 order by 价值 desc)
order by 企业名称, 价值 desc
(select 企业名称, 进口原料种类, sum(价值) 价值
from table1 group by 企业名称, 进口原料种类) A where 价值 in
(select top 3 价值 from
(select 企业名称, 进口原料种类, sum(价值) 价值
from table1 group by 企业名称, 进口原料种类) B where 企业名称=A.企业名称 order by 价值 desc)
order by 企业名称, 价值 desc