将字段依次写在order by 后面即可 , 中间用逗号隔开
select * from 表 order by time , name
select * from 表 order by time asc , name asc
select * from 表 order by time desc , name desc
select * from 表 order by time asc , name desc
select * from 表 order by time desc , name asc
(注: asc 表示升序 , desc表示降序 , 未明确写明排序方式时默认是升序 )
你什么数据库?oracle还是sql server,二者截取时间的方式不同,写法也不同。这样,我大概说下思路,剩下的自己按照思路写就可以了。(我按照oracle的写法来说的)
(1)截取时间字段到月,最好将时间字段变为字符的,比如2014-05-05 23:59:00.000 截取为201405,,
(2)利用case when 将金额分化。比如 case when to_char(时间,'yyyymm')='201405' then 金额 else 0 end 时间5月,case when to_char(时间,'yyyymm')='201406' then 金额 else 0 end 时间6月,case when to_char(时间,'yyyymm')='201407' then 金额 else 0 end 时间7月,case when to_char(时间,'yyyymm')='201408' then 金额 else 0 end 时间8月
(3)再利用厂商group by即可。
我写一个oracle的,如果是sql server的,那么你自己想想,大概意思差不多。
select 厂商,sum(case when to_char(时间,'yyyymm')='201405' then 金额 else 0 end) 时间5月,sum(case when to_char(时间,'yyyymm')='201406' then 金额 else 0 end) 时间6月,sum(case when to_char(时间,'yyyymm')='201407' then 金额 else 0 end) 时间7月,sum(case when to_char(时间,'yyyymm')='201408' then 金额 else 0 end) 时间8月 from A group by 厂商
select 厂商,
sum(case when 时间=to_date('05',MM) then 金额 end)as 时间5月,
sum(case when 时间=to_date('06',MM) then 金额 end)as 时间6月,
sum(case when 时间=to_date('07',MM) then 金额 end)as 时间7月,
sum(case when 时间=to_date('08',MM) then 金额 end)as 时间8月
from A表
group by 厂商
祝生活愉快,望采纳哦O(∩_∩)O~
http://448136160.blog.163.com/blog/static/113489220201052823029846/