日期:2014-05-18  浏览次数:20491 次

怎樣對匯總的結果(已包含Group by) 再匯總
表1

品號       日期                 數量
p123       2006.01.02     200  
p242       2006.10.02     250
p162       2006.07.22     700
p277       2006.12.02     750
p123       2006.04.02     350

第一次按品號和日期匯總
結果顯示在表格或其它控件上
select   品號,日期   sum(數量)   from   表1   group   by   品號,日期
(因為泄及到多表查詢,所以我簡單用上面語句表示一下)

第二次要在第一次匯總的結果上進行總的匯總(也就是在一條SQL語句裡)
我試過,
select   count(品號),sum(數量)   from  
(select   品號,日期   sum(數量)   from   表1   group   by   品號,日期)  
group   by   品號

出現錯誤 "除非同時指定了   TOP   子句,否則ORDER   BY   子句在檢視表、內嵌函數、衍生資料表、以及子查詢中均為無效。   "

應該怎麼正確實現以上語句功能呢?




------解决方案--------------------
create table 表1(品號 varchar(10),日期 varchar(10),數量 int)
insert into 表1 select 'p123 ', '2006.01.02 ',200
insert into 表1 select 'p242 ', '2006.10.02 ',250
insert into 表1 select 'p162 ', '2006.07.22 ',700
insert into 表1 select 'p277 ', '2006.12.02 ',750
insert into 表1 select 'p123 ', '2006.04.02 ',350
go

select 品號,日期,sum(數量) 數量 from 表1 group by 品號,日期
/*
品號 日期 數量
---------- ---------- -----------
p123 2006.01.02 200
p123 2006.04.02 350
p162 2006.07.22 700
p242 2006.10.02 250
p277 2006.12.02 750
*/

select count(品號) 品號,sum(數量) 數量 from
(select 品號,日期,sum(數量) 數量 from 表1 group by 品號,日期) t
group by 品號
go

/*
品號 數量
----------- -----------
2 550
1 700
1 250
1 750
*/

drop table 表1
go
------解决方案--------------------
楼主没有把完整的SQL语句贴出来,不过问题已经很明显了,把子查询里的 Order by 子句删除掉。
------解决方案--------------------
select count(品號),sum(數量) from
(select 品號,日期 sum(數量) from 表1 group by 品號,日期) 表名-----------
group by 品號