select EmpID,
  Day1_A=(select OnDuty1 from 班次表 where 排班表.Day1_A=班次表.ID),
  Day1_P=(select OffDuty2 from 班次表 where 排班表.Day1_P=班次表.ID),
  Day1_A=(select OnDuty1 from 班次表 where 排班表.Day1_A=班次表.ID),
  Day1_P=(select OffDuty2 from 班次表 where 排班表.Day1_P=班次表.ID),
...
  Day31_A=(select OnDuty1 from 班次表 where 排班表.Day31_A=班次表.ID),
  Day31_P=(select OffDuty2 from 班次表 where 排班表.Day31_P=班次表.ID)
from 排班表

解决方案 »

  1.   

    是不是这样???
    select EmpID,
           Day1_A=(select top 1 OnDuty1 from 班次表 where   ID=a.Day1_A),
           Day1_P=(select top 1 OffDuty2 from 班次表 where  ID=a.Day1_P),
           --...
    from 排班表 a
      

  2.   

    他的意思是取A,B,C,D的首发车和末班车发车时间
      

  3.   

    select a.EmpID, a.Day1_A,a.Day1_P,a.Day2_A,a.Day2_P, .......a.Day31_A,a.Day31_P from 排班表 a join 班次表 b on case when a.Day1_A=b.ID then a.Day1_A=b.OnDuty1 else 
                          case when a.Day1_P=b.ID then a.Day1_P=b.OffDuty2 else 
            ..................................
    不知道对不对 
      

  4.   

    排班表存的是班次表的代码,我想把代码转换成相对应的时间,是不是一定要用到游标才行?
    排班表的 Day1_A Day1_P 对应班次表的 OnDuty1  OffDuty2
      

  5.   

    应该是pbsql的那个了小李的也差不多
      

  6.   

    select a.EmpID
    ,Day1_A=b1.OnDuty1 , Day1_P=b1.OffDuty2
    ,Day2_A=b2.OnDuty1 , Day2_P=b2.OffDuty2
    ....
    ,Day31_A=b31.OnDuty1 , Day31_P=b31.OffDuty2
    from 排班表 a
    left join 班次表 b1 on a.Day1_A=b1.ID
    left join 班次表 b2 on a.Day2_A=b2.ID
    ...
    left join 班次表 b31 on a.Day31_A=b31.ID
      

  7.   

    对,谢谢了,忘了补充一点,还有一个假期表Holiday_CODE Name 
      E           事假
      F           病假请假是半天半天的请,请问上列查询如何再加入假期表的判断?
      

  8.   

    改这一句就行了
    Day1_A=isnull( (select top 1 OnDuty1 from 班次表 where   ID=a.Day1_A),
                   (select top 1 Name from 假期表 where   Holiday_CODE =a.Day1_A) ),
    ...
      

  9.   

    本来是这样的
    Day1_A=(select top 1 OnDuty1 from 班次表 where   ID=a.Day1_A),现在改成这样Day1_A=isnull((select top 1 OnDuty1 from 班次表 where   ID=a.Day1_A),
                  (select top 1 Name from 假期表 where Holiday_CODE =a.Day1_A)
                  ),
      

  10.   

    不能用 ISNULL 函数,查询的数据不对
      

  11.   

    Day1_A=(select top 1 isnull(a.OnDuty1,' ')+isnull(b.name,' ')
            from 班次表 a,假期表 b 
            where  ID=a.Day1_A or b.Holiday_CODE =a.Day1_A)
                  ),
      

  12.   

    同意pbsql(风云)、lsxaa(小李铅笔刀)。