SQL 怎么按时间排列
A表里面的字段金额厂商时间781万达2014-05-0523:59:00.000177万达2014-08-1823:59:00.000111啊啊2014-06-1823:...
A表里面的字段
金额 厂商 时间
781 万达 2014-05-05 23:59:00.000
177 万达 2014-08-18 23:59:00.000
111 啊啊 2014-06-18 23:59:00.000
222 亲亲 2014-06-18 23:59:00.000
要求变成按时间排序: 厂商 时间5月 时间6月 时间7月 时间8月
万达 781 0 0 177
啊啊 0 111 0 0
亲亲 0 222 0 0
那位大哥大姐帮忙看看要怎么写SQL语句能到达这样的显示效果,在这里先谢谢了! 展开
金额 厂商 时间
781 万达 2014-05-05 23:59:00.000
177 万达 2014-08-18 23:59:00.000
111 啊啊 2014-06-18 23:59:00.000
222 亲亲 2014-06-18 23:59:00.000
要求变成按时间排序: 厂商 时间5月 时间6月 时间7月 时间8月
万达 781 0 0 177
啊啊 0 111 0 0
亲亲 0 222 0 0
那位大哥大姐帮忙看看要怎么写SQL语句能到达这样的显示效果,在这里先谢谢了! 展开
4个回答
2014-12-18
展开全部
将字段依次写在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表示降序 , 未明确写明排序方式时默认是升序 )
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 厂商
(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 厂商
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐于2016-10-27
展开全部
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~
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~
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-12-18
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询