none
又遇难题了? RRS feed

  • 问题

  • SQL语名求助:

     

    工作中遇到了一个问题,现求助高手,表如下:为每人每月的工资

     

    ID     编号姓名    1 2345691011       12

    1       001  王五         100                     400                                                

    2       002  张三         300                                                                            

    3       001  王五         100  200  300            500            700  800            0             1000

    4       003  赵七         0       500                                                                   

    5       001  王五         0                                            600            900 

    6       002  张三                   400  500  700                                                

    7       004  刘四         100            300  400  500  600                             

     

    求每人每月的工资,生成如下表格

    ID     编号         姓名         1 2 3 4 5 6 9 10        11        12

    1       001  王五         100  200  300  400  500  600  700  800  900  1000

    2       002  张三         300  400  500  700                                                

    3       003  赵七                   500                                                                   

    4       004  刘四         100            300  400  500  600           


    cuijianchun
    2009年11月14日 14:34

答案

  • select
        编号,
        姓名
    ,
        sum(
    1
    月) as 1,
        sum(
    2
    月) as 2,
        sum(
    3
    月) as 3,
        sum(
    4
    月) as 4,
        sum(
    5
    月) as 5,
        sum(
    6
    月) as 6,
        sum(
    7
    月) as 7,
        sum(
    8
    月) as 8,
        sum(
    9
    月) as 9,
        sum(
    10
    月) as 10,
        sum(
    11
    月) as 11,
        sum(
    12
    月) as 12
    from ta
    group by 编号,
        姓名

    More: blog.csdn.net/happyflystone
    2009年11月15日 4:02
  • 数据是从各方搜集的,所以很另类,求和好求,关键我现在的问题是要对每人每月的数据进行判断,取最大值,如两条记录中都有一月份的工资,我只取最大的那一个。另外,我还想直接把一表的数据理顺,怎么才能直接对一表进行更新、删除等。


    cuijianchun

    sum----> max()
    More: blog.csdn.net/happyflystone
    2009年11月15日 14:30

全部回复

  • Why each person has multiple rows? Much easier to query data if enter data in proper way.
    2009年11月14日 18:43
  • 生成第二个表格的目的,主要是想用于更新第一个表内容,也就是说,这个问题的本质是想从不同的数据源获取数据后,对数据进行归整,得出每个人的年度工资,即对每人每月工资的汇总后纳入同一张表格进行处理,主要是以下两种情况:

    一是某人的月份工资信息重复存储;如一表的王五1月份工资第1条记录与第3条记录重复;

    二是某人的月份工资信息存于不同的记录中,如一表的王五4月份工资存在第1条记录当中,而第3条记录和第5条记录为空值(或为0)。

     


    cuijianchun
    2009年11月15日 2:35
  • select
        编号,
        姓名
    ,
        sum(
    1
    月) as 1,
        sum(
    2
    月) as 2,
        sum(
    3
    月) as 3,
        sum(
    4
    月) as 4,
        sum(
    5
    月) as 5,
        sum(
    6
    月) as 6,
        sum(
    7
    月) as 7,
        sum(
    8
    月) as 8,
        sum(
    9
    月) as 9,
        sum(
    10
    月) as 10,
        sum(
    11
    月) as 11,
        sum(
    12
    月) as 12
    from ta
    group by 编号,
        姓名

    More: blog.csdn.net/happyflystone
    2009年11月15日 4:02
  • select 编号,姓名,sum(isnull(1月,0)) as 1月,
                            sum(isnull(2月,0)) as 2月,
                          .........................
                          sum(isnull(12月,0)) as 12月
    from 表 group by 编号,姓名



    sum的列不能有null 否则结果会不准确 
    这个其实对各条数据求和 老实说 这个表的数据非常畸形
    2009年11月15日 7:43
  • 数据是从各方搜集的,所以很另类,求和好求,关键我现在的问题是要对每人每月的数据进行判断,取最大值,如两条记录中都有一月份的工资,我只取最大的那一个。另外,我还想直接把一表的数据理顺,怎么才能直接对一表进行更新、删除等。


    cuijianchun
    2009年11月15日 14:16
  • 数据是从各方搜集的,所以很另类,求和好求,关键我现在的问题是要对每人每月的数据进行判断,取最大值,如两条记录中都有一月份的工资,我只取最大的那一个。另外,我还想直接把一表的数据理顺,怎么才能直接对一表进行更新、删除等。


    cuijianchun

    sum----> max()
    More: blog.csdn.net/happyflystone
    2009年11月15日 14:30