请教各位这个sql语句该怎么写??小弟琢磨了很久,感觉有点绕
这是我写的:
select * from (select year,month,money from order_sum a where exists(select month from order_sum b where b.year=2014 and a.month = b.month group by month)
union ALL
select 2014,month,0.00 from order_sum a where not EXISTS(select month from order_sum b where b.year=2014 and a.month = b.month group by month)) as temp_a
LEFT JOIN
(select year,month,money from order_sum a where exists(select month from order_sum b where b.year=2015 and a.month = b.month group by month)
union ALL
select 2015,month,0.00 from order_sum a where not EXISTS(select month from order_sum b where b.year=2015 and a.month = b.month group by month)) as temp_b on temp_a.month = temp_b.month
请各位大哥指点一下,看看能不能再优化一下,谢谢了
标准的行列转换。
http://blog.sina.com.cn/s/blog_4586764e0100lzmx.html
http://cenalulu.github.io/mysql/column-row-reverse/
谢谢
咕~~(╯﹏╰)b 你可以搜一下 “SQL 行列转换” 好多个例子
好的,感谢
@思心思危: http://zhidao.baidu.com/link?url=-36B56WWmVPsoV-7T0rdXT9z6Y1V2B7JybJIL3ovlW0K5ALTLON1MDN-gfJJ5WqtSjvqWxIJzXlHKILEDkRGWa
这个分了动态sql和静态sql 。就是列数固定不固定。 我sql也不好,哈哈 共同学习。
@思心思危: 楼下那个标准表那个可以用,直接改改列名就可以了。
@思心思危: 2.
mysql行转列(综合利用if + sum)-
http://blog.csdn.net/jayxujia123/article/details/21739125
上边那个百度知道动态和静态,结合这个sum if。我学会啦,嘿嘿。
主要确定列名,然后填充数据就行了。 就是动态列名的那个有点麻烦~
@小刺猬001: 你太谦虚了,我现在在学习mylsq,但是感觉好多的知识都不知道,我现在在看高性能mysql,像今天遇到的这个问题,还是不怎么会,写了那么一大堆,结果还是达不到效果,要不是你们指点,我估计够呛
select Orderstiln.Year AS '年份',
sum(if(Orderstiln.Month=1,Moeny,0)) AS '1月份',
sum(if(Orderstiln.Month=2,Moeny,0)) AS '2月份',
sum(if(Orderstiln.Month=11,Moeny,0)) AS '11月份',
sum(if(Orderstiln.Month=12,Moeny,0)) AS '12月份',
sum(Moeny) AS 总计
from Orderstiln
group by Orderstiln.Year ;
你来晚了,他刚发完园豆。我竟然还发了40呢~
@小刺猬001: 不为豆子而来。豆子那都是浮云。解决问题才是关键!一起学习!
@小刺猬001: 我不怎么会玩博客,刚玩两三天呢!
谢谢,我已经写出来了,真的非常感谢你们
@思心思危: 嗯嗯,解决了就行!与君共勉!哈哈。
@贫民窟大侠: 想问下你们是怎么学习mysql的?能告诉我一些你们学习的资料什么的吗?我感觉我学的东西很基础,一遇到点难的就不会了
@思心思危: 没有刻意的去学呢!估计只有实践才能学到东西。不慌,慢慢来。多动手实践。
@贫民窟大侠: 也对,大侠你这发的图片很高大上啊!
@思心思危: 嗯,女神。
@贫民窟大侠: 啊??你的女神吗?
@贫民窟大侠: 有豆子才有动力。就像闪存的星星如果没了,我就没动力去了。