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

急急急:一个SQL语句问题
目前有一个表,是企业一年十二个月份的业绩,表的结构是这样的:



其中userguid是企业编码,years是年份,后面的firstyield~twelfthyield是1到12月的业绩,最后一个字段infoType是代表业绩的一个类型,值为1、2、3。

在页面显示的时候我想要的显示结果是这样的


但是坑爹的是业绩的字段都是varchar类型,坑爹的前人不知道怎么设计的,本来想用group by分组求和来横向显示,但现在不行了,哪位大神给个提示,用一个SQL语句查询出来。
SQL .net?

------解决方案--------------------
这是1月份的,其他月份你自己复制粘贴吧。
还有我不知道你那个1、2、3分别代表什么,所以infotype你自己去调。另外如果不转换类型你这个根本做不了,我已经用ISNUMERIC来限定只统计能转换成数值型的数据,其他数据赋值为0
SELECT  userguid ,
        years ,
        [一月产量] = SUM(CASE WHEN infotype = 1
                               AND ISNUMERIC(firstyield) = 1
                          THEN CONVERT(DECIMAL(9, 2), firstyield)
                          ELSE 0
                     END) ,
        [一月产值] = SUM(CASE WHEN infotype = 2
                               AND ISNUMERIC(firstyield) = 1
                          THEN CONVERT(DECIMAL(9, 2), firstyield)
                          ELSE 0
                     END) ,
        [一月税金] = SUM(CASE WHEN infotype = 3
                               AND ISNUMERIC(firstyield) = 1
                          THEN CONVERT(DECIMAL(9, 2), firstyield)
                          ELSE 0