SELECT
    *,
    [2007的AMT数据]-[2006的AMT数据],
    ([2007的AMT数据]-[2006的AMT数据])/[2006的AMT数据]
FROM (
    SELECT
        cmcode,
        SUM(CASE WHEN YY=2007 THEN AMT ELSE 0 END) AS [2007的AMT数据],
       SUM(CASE WHEN YY=2007 THEN TS_AMT ELSE 0 END) AS [2007的TS_AMT数据],
        SUM(CASE WHEN YY=2006 THEN AMT ELSE 0 END) AS [2006的AMT数据],
        SUM(CASE WHEN YY=2006 THEN TS_AMT ELSE 0 END) AS [2006的TS_AMT数据],
    FROM tb
    GROUP BY cmcode
) AS T

解决方案 »

  1.   


    如果固定就这7列可以这样:select cmcode,
           sum(case when yy = 2007 then amt else 0 end) as 2007amt,
           sum(case when yy = 2007 then ts_amt else 0 end) as 2007tsamt,
           ....
    from ta
    group by cmcode
      

  2.   

    服务器: 消息 156,级别 15,状态 1,行 12
    在关键字 'FROM' 附近有语法错误。
      

  3.   


     
    数据表为LI
    SELECT  YY=2007的AMT数,YY=2007的TS_AMT数据,YY=2007的AMT数据,YY=2007的TS_AMT数据,
            (YY=2007的AMT数据-YY=2006的AMT数据), (YY=2007的AMT数据-YY=2006的AMT数据)/YY=2006的AMT数据
    FROM
    (
    SELECT cmcode, 
           sum(case when yy = 2007  then amt end) as  YY=2007的AMT数据,
           sum(case wen yy= 2007 then ts_amt end) as  YY=2007的TS_AMT数据,
           sum(case when yy = 2006then amt end) as  YY=2007的AMT数据,
           sum(case wen yy= 2006then ts_amt end) as  YY=2007的TS_AMT数据 
    FROM LI 
    group byy cmcode) LO  
      

  4.   

    去掉啦.......
    select cmcode,
           sum(case when yy = 2007 then amt else 0 end) as 2007amt,
           sum(case when yy = 2007 then ts_amt else 0 end) as 2007tsamt,
           sum(case when yy = 2006 then amt else 0 end) as 2006amt,
           sum(case when yy = 2006 then ts_amt else 0 end) as 2006tsamt
    from PG_ADD_CM
    group by cmcode
    服务器: 消息 170,级别 15,状态 1,行 2
    第 2 行: '2007' 附近有语法错误。
    SELECT
        *,
        [2007的AMT数据]-[2006的AMT数据],
        ([2007的AMT数据]-[2006的AMT数据])/[2006的AMT数据]
    FROM (
        SELECT
            cmcode,
            SUM(CASE WHEN YY=2007 THEN AMT ELSE 0 END) AS [2007的AMT数据],
           SUM(CASE WHEN YY=2007 THEN TS_AMT ELSE 0 END) AS [2007的TS_AMT数据],
            SUM(CASE WHEN YY=2006 THEN AMT ELSE 0 END) AS [2006的AMT数据],
            SUM(CASE WHEN YY=2006 THEN TS_AMT ELSE 0 END) AS [2006的TS_AMT数据]
        FROM PG_ADD_CM
        GROUP BY cmcode
    ) AS T服务器: 消息 8134,级别 16,状态 1,行 1
    遇到被零除错误。
      

  5.   


    这是最后 应该要得出来的数据  大大们 求教呀cmcode         CM_2009.amt CM_2009.TS_AMT CM_2008.amt CM_2008.TS_AMT ADDAMT         BL_AMT
    76082010 21007486.76 2730973.23 ¥21,007,486.76 99.99
    76061250 8497078.42 1104620.2 ¥8,497,078.42 99.99
    83062990 21931867.43 2412505.48 16052207.5 1119351.86 ¥5,879,659.93 .3663
    64029920 4820392.82 626651.07 ¥4,820,392.82 99.99
    72202030 4663327.71 233166.42 ¥4,663,327.71 99.99
    52084100 5394974.04 803796.61 1416550.04 173282.74 ¥3,978,424.00 2.8085
    85161010 2358462.8 330184.8 ¥2,358,462.80 99.99
    84292010 2222222.22 377777.78 ¥2,222,222.22 99.99
    90184100 12950254.19 2201543.2 10891051.94 1851479.06 ¥2,059,202.25 .1891
    85161020 1984132.43 277778.52 ¥1,984,132.43 99.99
    38244010 1862134.33 204834.74 ¥1,862,134.33 99.99
    96138000 4251059.84 552637.77 2444333.65 317763.4 ¥1,806,726.19 .7391
    64062020 1670588.96 217176.56 ¥1,670,588.96 99.99
    64029910 1656999.09 215409.92 ¥1,656,999.09 99.99
    82073000 2496647.27 274631.19 939548.67 50362.07 ¥1,557,098.60 1.6573
    84798999 1487362.61 208230.79 ¥1,487,362.61 99.99
    84775900 1414384.69 198013.88 113754.7 14788.12 ¥1,300,629.99 11.4336
    76082091 1042729.44 135554.82 ¥1,042,729.44 99.99
    76042100 864499.08 112384.88 ¥864,499.08 99.99
    51111990 780653.45 109291.48 ¥780,653.45 99.99
    95030081 769769.55 107767.73 ¥769,769.55 99.99
    38244090 756410.27 37820.5 ¥756,410.27 99.99
    84571090 1144466.65 194559.29 405982.9 69017.1 ¥738,483.75 1.819
    85042100 737786.32 125423.68 ¥737,786.32 99.99
    ...............
      

  6.   

    SELECT
        *,
        [2007的AMT数据]-[2006的AMT数据],
        NULLIF(([2007的AMT数据]-[2006的AMT数据]),0)/[2006的AMT数据]
    FROM (
        SELECT
            cmcode,
            SUM(CASE WHEN YY=2007 THEN AMT ELSE 0 END) AS [2007的AMT数据],
           SUM(CASE WHEN YY=2007 THEN TS_AMT ELSE 0 END) AS [2007的TS_AMT数据],
            SUM(CASE WHEN YY=2006 THEN AMT ELSE 0 END) AS [2006的AMT数据],
            SUM(CASE WHEN YY=2006 THEN TS_AMT ELSE 0 END) AS [2006的TS_AMT数据]
        FROM PG_ADD_CM
        GROUP BY cmcode
    ) AS T
      

  7.   

    select cmcode,
           sum(case when yy = 2007 then amt else 0 end) as [2007amt],
           sum(case when yy = 2007 then ts_amt else 0 end) as [2007tsamt],
           sum(case when yy = 2006 then amt else 0 end) as [2006amt],
           sum(case when yy = 2006 then ts_amt else 0 end) as [2006tsamt]
    from PG_ADD_CM
    group by cmcode
      

  8.   

    ------------------------------------------------------------------------
    -- Author : HappyFlyStone 
    -- Date   : 2009-05-31 17:52:26
    -- Version: Microsoft SQL Server 2005 - 9.00.2047.00 (Intel X86) 
    --       Apr 14 2006 01:12:25 
    --       Copyright (c) 1988-2005 Microsoft Corporation
    --       Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
    --      
    -------------------------------------------------------------------------- Test Data: ta
    IF OBJECT_ID('[ta]') IS NOT NULL 
        DROP TABLE [ta]
    Go
    CREATE TABLE ta([cmcode] INT,[yy] int,[amt] NUMERIC(17,2),[ts_amt] NUMERIC(16,2),[time] DATETIME)
    Go
    INSERT INTO ta
       SELECT 84659900,'2007',39592.07,2375.53,'2009-05-31 17:02:40.810' UNION ALL
       SELECT 69089000,'2007',224296.59,12163.47,'2009-05-31 17:02:40.810' UNION ALL
       SELECT 85452000,'2007',102366.09,13307.59,'2009-05-31 17:02:40.810' UNION ALL
       SELECT 07129090,'2007',122991.14,15988.85,'2009-05-31 17:02:40.810' UNION ALL
       SELECT 95049040,'2007',442678.89,50540.22,'2009-05-31 17:02:40.810' UNION ALL
       SELECT 70109020,'2006',235845.21,30659.87,'2009-05-31 17:02:40.810' UNION ALL
       SELECT 82159900,'2007',2193347.57,188067.26,'2009-05-31 17:02:40.810' UNION ALL
       SELECT 64051000,'2007',98816.98,12221.44,'2009-05-31 17:02:40.810' UNION ALL
       SELECT 52054400,'2007',3657652.26,402341.74,'2009-05-31 17:02:40.810' UNION ALL
       SELECT 72299090,'2007',289333.64,14466.68,'2009-05-31 17:02:40.810' UNION ALL
       SELECT 85131010,'2007',1794111.81,233234.55,'2009-05-31 17:02:40.810' UNION ALL
       SELECT 96032900,'2007',31565.32,3553.72,'2009-05-31 17:02:40.810' UNION ALL
       SELECT 84514000,'2007',1382981.76,179787.63,'2009-05-31 17:02:40.810' UNION ALL
       SELECT 66019900,'2007',1502233.19,165245.61,'2009-05-31 17:02:40.810' UNION ALL
       SELECT 90019000,'2006',3325.04,432.25,'2009-05-31 17:02:40.810' UNION ALL
       SELECT 62089910,'2007',53589.91,5894.89,'2009-05-31 17:02:40.810' UNION ALL
       SELECT 90251100,'2007',6745.40,876.90,'2009-05-31 17:02:40.810' UNION ALL
       SELECT 84501110,'2007',1080129.89,140416.87,'2009-05-31 17:02:40.810' UNION ALL
       SELECT 73239200,'2007',28092.31,1404.62,'2009-05-31 17:02:40.810' UNION ALL
       SELECT 85161000,'2007',820903.62,106717.48,'2009-05-31 17:02:40.810' 
    GO
    --Start
    SELECT
        *,
        [2007的AMT数据]-[2006的AMT数据],
         ([2007的AMT数据]-[2006的AMT数据])/case when [2006的AMT数据] = 0 then 1 else [2006的AMT数据] end
    FROM (
        SELECT
            cmcode,
            SUM(CASE WHEN YY=2007 THEN AMT ELSE 0 END) AS [2007的AMT数据],
           SUM(CASE WHEN YY=2007 THEN TS_AMT ELSE 0 END) AS [2007的TS_AMT数据],
            SUM(CASE WHEN YY=2006 THEN AMT ELSE 0 END) AS [2006的AMT数据],
            SUM(CASE WHEN YY=2006 THEN TS_AMT ELSE 0 END) AS [2006的TS_AMT数据]
        FROM ta
        GROUP BY cmcode
    ) AS T
    --Result:
    /*
    cmcode      2007的AMT数据                              2007的TS_AMT数据                           2006的AMT数据                              2006的TS_AMT数据                                                                   
    ----------- --------------------------------------- --------------------------------------- --------------------------------------- --------------------------------------- --------------------------------------- ---------------------------------------
    7129090     122991.14                               15988.85                                0.00                                    0.00                                    122991.14                               122991.140000
    52054400    3657652.26                              402341.74                               0.00                                    0.00                                    3657652.26                              3657652.260000
    62089910    53589.91                                5894.89                                 0.00                                    0.00                                    53589.91                                53589.910000
    64051000    98816.98                                12221.44                                0.00                                    0.00                                    98816.98                                98816.980000
    66019900    1502233.19                              165245.61                               0.00                                    0.00                                    1502233.19                              1502233.190000
    69089000    224296.59                               12163.47                                0.00                                    0.00                                    224296.59                               224296.590000
    70109020    0.00                                    0.00                                    235845.21                               30659.87                                -235845.21                              -1.000000
    72299090    289333.64                               14466.68                                0.00                                    0.00                                    289333.64                               289333.640000
    73239200    28092.31                                1404.62                                 0.00                                    0.00                                    28092.31                                28092.310000
    82159900    2193347.57                              188067.26                               0.00                                    0.00                                    2193347.57                              2193347.570000
    84501110    1080129.89                              140416.87                               0.00                                    0.00                                    1080129.89                              1080129.890000
    84514000    1382981.76                              179787.63                               0.00                                    0.00                                    1382981.76                              1382981.760000
    84659900    39592.07                                2375.53                                 0.00                                    0.00                                    39592.07                                39592.070000
    85131010    1794111.81                              233234.55                               0.00                                    0.00                                    1794111.81                              1794111.810000
    85161000    820903.62                               106717.48                               0.00                                    0.00                                    820903.62                               820903.620000
    85452000    102366.09                               13307.59                                0.00                                    0.00                                    102366.09                               102366.090000
    90019000    0.00                                    0.00                                    3325.04                                 432.25                                  -3325.04                                -1.000000
    90251100    6745.40                                 876.90                                  0.00                                    0.00                                    6745.40                                 6745.400000
    95049040    442678.89                               50540.22                                0.00                                    0.00                                    442678.89                               442678.890000
    96032900    31565.32                                3553.72                                 0.00                                    0.00                                    31565.32                                31565.320000(20 行受影响)*/
    --End