2 qq 28558267 qq_28558267 于 2015.05.28 17:15 提问

sql查询遇到的一点问题

原始数据如图
图片说明

我想根据SM_Statistics_Year年份为条件,查询出这样一个效果图
图片说明

,上面这个图是我拼接的,其中SM_Statistics_TotalPriceP1是2015年根据月份算得的总金额,

SM_Statistics_TotalPriceP2是2014年根据月份算得的总金额。下面这个图是我初步的一点想法,是错的,让你们看一下我的思路图片说明

。想了一天了,也没做出来,只好上网问下各位大大,小弟初学sql,还望各位不吝赐教!

3个回答

edouardzyc
edouardzyc   2015.05.28 17:52
已采纳

select month,
SUM(case when year='2014' then total else 0 end) as '2014',
SUM(case when year='2015' then total else 0 end) as '2015'
from table
group by month

名称自己替换下?

qq_28558267
qq_28558267 谢谢你,你的回答完美的解决了我的问题,而且还简单明了,学习了!!!
接近 3 年之前 回复
devmiao
devmiao   Ds   Rxr 2015.05.28 17:23

怎么只有一个表,别的表呢

Tiger_Zhao
Tiger_Zhao   Rxr 2015.05.28 17:25
        SELECT n.number P1Month,
               p1.sm_statistics_totalpricep1,
               p2.sm_statistics_totalpricep2
          FROM (SELECT number
                  FROM master..spt_values
                 WHERE type = 'p'
                   AND number BETWEEN 1 AND 12
               ) n
     LEFT JOIN (SELECT sm_statics_month,
                       sum(sm_statistics_totalprice) sm_statistics_totalpricep1
                  FROM sm_statistics
                 WHERE sm_statistics_year = 2014
                 GROUP BY sm_statics_month
               ) P1
            ON n.number = P1.sm_statics_month
     LEFT JOIN (SELECT sm_statics_month,
                       sum(sm_statistics_totalprice) sm_statistics_totalpricep2
                  FROM sm_statistics
                 WHERE sm_statistics_year = 2015
                 GROUP BY sm_statics_month
               ) P2
            ON n.number = P2.sm_statics_month
Tiger_Zhao
Tiger_Zhao 回复qq_28558267: 两年比较居然不要全部12个月的?
接近 3 年之前 回复
qq_28558267
qq_28558267 谢谢啦,我试了下,这样查询的结果查出了12个月每个月的信息,稍加修改也是可以哒,不过和楼上的兄台相比就略显复杂,不过还是谢谢啦!!!
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!