日期:2014-05-17  浏览次数:20521 次

sql小计合计问题
SELECT  CAST(s.Year AS VARCHAR) +'年'+
        CAST(s.Month AS VARCHAR)+'月',
        tmp.quarter
FROM    dbo.s_SalesBudget s INNER JOIN dbo.p_tmp tmp ON s.Month=tmp.month
WHERE   YEAR = '2009'
GROUP BY s.Month,YEAR,tmp.quarter
ORDER BY s.Month 
根据quatrter进行小计,最后所以合计
year           quatrter
2009年1月 1
2009年2月 1
2009年3月 1
2009年4月 2
2009年5月 2
2009年6月 2
2009年7月 3
2009年8月 3
2009年9月 3
2009年10月 4
2009年11月 4
2009年12月 4

------解决方案--------------------
引用:
Quote: 引用:

对了,你是想显示2列,一列是年月,一列是季度,然后再是季度的小计,比如这样:

年月      季度
2013年1月 1
2013年2月 1
2013年3月 1
 null     1


是这样吗

时   间

2009年1月
2009年2月
2009年3月
一季度汇总
2009年4月
2009年5月
2009年6月
二季度汇总
2009年7月
2009年8月
2009年9月
三季度汇总
2009年10月
2009年11月
2009年12月
四季度汇总
2009年汇总
想要这种格式的,不知道怎么写


试试这个:
SELECT  CASE WHEN GROUPING(tmp.quarter)  <> 1 THEN CAST(tmp.quarter as varchar)+'季度小计'
             ELSE CAST(s.Year AS VARCHAR) + '年' + CAST(s.Month AS VARCHAR)
                  + '月'
        END ,
        tmp.quarter
FROM    dbo.s_SalesBudget s
        INNER JOIN dbo.p_tmp tmp ON s.Month = tmp.month
WHERE   YEAR = '2009'
GROUP BY 
        YEAR ,
        tmp.quarter,s.Month 
        WITH ROLLUP
having GROUPING(year) = 0
ORDER BY s.Month