有下面三张表:工资项目表
 
Id 项目名 初始值    
1 标准工资 1200    
2 浮动工资 200  
员工表
 
id 姓名 性别 年龄    
1 a君 男 21    
2 b女 女 22    
3 c君 男 23  工资表
 
Id 员工Id 项目Id 钱    
1 1 1 1200    
2 1 2 2365    
3 2 1 500    
4 2 2 6546    
5 3 1 1200    
6 3 2 0  要查的结果
 
姓名 性别 标准工资 浮动工资    
a君 男 1200 2365    
b女 女 500 6546    
c君 男 1200 0  请高手帮忙,谢谢!!!!!!!!!!!

解决方案 »

  1.   

    select 员工表.姓名,员工表.性别,
    (select top 1 钱 from 工资表 where 员工表.id=工资表.员工Id and 项目Id=1) as 标准工资,
    (select top 1 钱 from 工资表 where 员工表.id=工资表.员工Id and 项目Id=2) as 浮动工资  from 员工表  
      

  2.   

    工资表里的员工id是员工表的外键,项目id是工资项目表的外键
      

  3.   

    试下:
    select a.姓名,a.性别,b.标准工资,b.浮动工资 from 工资项目表 as b inner join 工资表 as c on (c.项目id=b.id)
    inner join 员工表 as a on (c.员工id=a.id)
      

  4.   

    select b.姓名,b.性别,
            sum(case a.项目Id  when 1  then a.钱 else 0 end) as 标准工资,
            sum(case a.项目Id  when 2  then a.钱 else 0 end) as 浮动工资
    from 工资表  as a inner join 
         员工表  as b on a.员工id=b.id inner join
         工资项目表  as c on a.项目Id =c.id  
    group by b.姓名,b.性别 
     
     你这个后续应该还有月份的需求吧?
      

  5.   

    要按照日期分类的话.就这样, 简单的行专列
    select b.姓名,b.性别,convert(nvarchar(7),b.日期,120) as 月份
            sum(case a.项目Id  when 1  then a.钱 else 0 end) as 标准工资,
            sum(case a.项目Id  when 2  then a.钱 else 0 end) as 浮动工资
    from 工资表  as a inner join 
         员工表  as b on a.员工id=b.id inner join
         工资项目表  as c on a.项目Id =c.id  
    group by b.姓名,b.性别,convert(nvarchar(7),b.日期,120)