none
关于同一字段查询的问题 RRS feed

  • 问题

  • 我做了一个表,用来登记请假信息,其中有一个请假类型,和请假时间字段,请问,我如何用sql查询中,分别统计不同请假类型的请假时间。举个列子 :

    姓名          请假类型          请假时间

    张三            公出                   1

    李四            事假                   3

    王五            病假                   2

    张三            病假                   2

    怎么让查询结果为

    姓名            病假            事假          公出

    张三             2                                 1

    李四                                3

    王五             2                 

    2010年6月28日 9:23

答案

  • 这个是典型的列行转换,给个列子自己照着写吧

    create table #tb(姓名 varchar(10) , 课程 varchar(10) , 分数 int)
    insert into #tb values('张三' , '语文' , 74)
    insert into #tb values('张三' , '数学' , 83)
    insert into #tb values('张三' , '物理' , 93)
    insert into #tb values('李四' , '语文' , 74)
    insert into #tb values('李四' , '数学' , 84)
    insert into #tb values('李四' , '物理' , 94)
    go
    
    select * from #tb
    
    SELECT * FROM #tb
    PIVOT(sum(分数) FOR 课程 IN (语文, 数学, 物理)) AS A
    
    

     

    主要用pivot完成


    family as water
    • 已标记为答案 清风_科 2010年6月29日 6:26
    2010年6月28日 10:20

全部回复

  • 这个是典型的列行转换,给个列子自己照着写吧

    create table #tb(姓名 varchar(10) , 课程 varchar(10) , 分数 int)
    insert into #tb values('张三' , '语文' , 74)
    insert into #tb values('张三' , '数学' , 83)
    insert into #tb values('张三' , '物理' , 93)
    insert into #tb values('李四' , '语文' , 74)
    insert into #tb values('李四' , '数学' , 84)
    insert into #tb values('李四' , '物理' , 94)
    go
    
    select * from #tb
    
    SELECT * FROM #tb
    PIVOT(sum(分数) FOR 课程 IN (语文, 数学, 物理)) AS A
    
    

     

    主要用pivot完成


    family as water
    • 已标记为答案 清风_科 2010年6月29日 6:26
    2010年6月28日 10:20
  • 贡献一个,

    SELECT Name, SUM(CASE WHEN VacationType = N'事假' THEN Days ELSE 0 END) AS '事假',
                 SUM(CASE WHEN VacationType = N'病假' THEN Days ELSE 0 END) AS N'病假',
                 SUM(CASE WHEN VacationType = N'公出' THEN Days ELSE 0 END) AS N'公出'
                 FROM dbo.Vacation GROUP BY Name

     

    GO

     

     

     

     

    2010年6月29日 2:19