0

以下は私のクエリです:

select employid,deprtmnt,jobtitle,[H-RT],[H-OT]
from 
(                  
 SELECT employid,deprtmnt,jobtitle,chekdate,UNTSTOPY,Category                  
 FROM 
 (                  
   SELECT employid,deprtmnt,jobtitle,chekdate,UNTSTOPY,payrolcd as     category              
   FROM [upr30300]    
   where DEPRTMNT like '600%'          
 ) t                  
 where chekdate = '2012-03-09' and Category in ('H-RT','H-OT')                  
) d             
PIVOT
(
  SUM(UNTSTOPY) 
  FOR Category IN ([H-RT],[H-OT])
)p

結果には、2 つのピボット (H-RT および H-OT) を含む列が表示されます。チェックデートでフィルター処理してフィルターの結果を取得できますが、H-RT、H-OT を示す 2 つの EXTRA 列を取得する方法を見つけようとしています。

dateadd 関数を使用しようとしましたが、H-RT(period1),H-OT(period1),H-RT(period2),H-OT( を含む 1 つの結果セットを取得する方法がわかりません。 period2)...どなたか、これを成し遂げるための方向性やアイデアをお持ちですか?

前もって感謝します!

サンプルデータは次のとおりです。

EMPLOYID    DEPRTMNT    JOBTITLE    H-RT    H-OT
ABC123          600-20  CA      77.78000    7.47000
ABC124          600-80  CSA     55.65000    0.58000
ABC125          600-70  RAA     77.68000    0.03000

必要なデータは次のとおりです。

EMPLOYID    DEPRTMNT    JOBTITLE    H-RT1   H-OT1      H-RT2      H-OT2
ABC123          600-20  CA      77.78000    7.47000    80.00      12.00
ABC124          600-80  CSA     55.65000    0.58000    74.00      16.00
ABC125          600-70  RAA     77.68000    0.03000    48.00       2.00

必要なデータ列 H-RT1,H-OT1 は、chekdate = '2012-03-09' であり、列 H-RT2,H-OT2 は、chekdate = '2012-03-09' + 14 日です。

4

1 に答える 1

0

次のようなものを使用できるはずです。

select employid,
  deprtmnt,
  jobtitle,
  [H-RT_1],
  [H-OT_1], 
  [H-RT_2],
  [H-OT_2]
from 
(                  
 SELECT employid,
    deprtmnt,
    jobtitle,
    chekdate,
    UNTSTOPY,
    Category,
    case when chekdate = '2012-03-09' then Category+'_1' 
      when chekdate = dateadd(d, 14, '2012-03-09') then Category+'_2' end period
 FROM 
 (                  
   SELECT employid,
     deprtmnt,
     jobtitle,
     chekdate,
     UNTSTOPY,
     payrolcd as category              
   FROM [upr30300]    
   where DEPRTMNT like '600%'
 ) t                  
 where (chekdate = '2012-03-09' or chekdate = dateadd(d, 14, '2012-03-09'))
    and Category in ('H-RT','H-OT')                  
) d             
PIVOT
(
  SUM(UNTSTOPY) 
  FOR Category IN ([H-RT_1],[H-OT_1], [H-RT_2],[H-OT_2])
)p
于 2012-12-06T21:19:30.567 に答える