2014-03-03 50 views
0

我有一個表,看起來像這樣:的MySQL集團按行


Associate Pay_Code Hours Site Date  Week  Year 
Bill REG 8.0 US 3/3/2014 10  2014 
Bill REG 8.0 US 3/4/2014 10  2014 
Bill REG 8.0 US 3/5/2014 10  2014 
Bill REG 8.0 US 3/6/2014 10  2014 
Bill VTO 6.0 US 3/7/2014 10  2014 
Bill PERS 2.0 US 3/7/2014 10  2014 
Mary REG 8.0 Canada 3/3/2014 10  2014 
Mary REG 8.0 Canada 3/4/2014 10  2014 
Mary REG 8.0 Canada 3/5/2014 10  2014 
Mary REG 8.0 Canada 3/6/2014 10  2014 
Mary REG 6.0 Canada 3/7/2014 10  2014 
Mary PERS 2.0 Canada 3/7/2014 10  2014 
Fred REG 8.0 England 3/3/2014 10  2014 
Fred REG 8.0 England 3/4/2014 10  2014 
Fred REG 8.0 England 3/5/2014 10  2014 
Fred REG 8.0 England 3/6/2014 10  2014 
Fred REG 8.0 England 3/7/2014 10  2014 
Wilma REG 8.0 Jamaica 3/3/2014 10  2014 
Wilma REG 8.0 Jamaica 3/4/2014 10  2014 
Wilma REG 8.0 Jamaica 3/5/2014 10  2014 
Wilma REG 8.0 Jamaica 3/6/2014 10  2014 
Wilma REG 8.0 Jamaica 3/7/2014 10  2014 
Wilma OT 5.0 Jamaica 3/7/2014 10  2014 
Jethro REG 8.0 Africa 3/3/2014 10  2014 
Jethro REG 8.0 Africa 3/4/2014 10  2014 
Jethro REG 8.0 Africa 3/5/2014 10  2014 
Jethro REG 8.0 Africa 3/6/2014 10  2014 
Jethro REG 8.0 Africa 3/7/2014 10  2014 
Jethro OT 8.0 Africa 3/7/2014 10  2014 
Frank REG 8.0 Iraq 3/3/2014 10  2014 
Frank PERS 8.0 Iraq 3/4/2014 10  2014 
Frank PERS 8.0 Iraq 3/5/2014 10  2014 
Frank VACP 8.0 Iraq 3/6/2014 10  2014 
Frank VACP 8.0 Iraq 3/7/2014 10  2014 

這個查詢:

SELECT Pay_Code, Site, SUM(Hours), Week(Date,4), YEAR(Date) 

FROM table 

GROUP BY Pay_Code, Site, YEAR(Date), WEEK(Date,4) 

給我:

Pay Code Site Sum of Hours  Week  Year 
OT   Africa 8.0    10  2014 
      Jamaica 5.0    10  2014 
PERS  Canada 2.0    10  2014 
      Iraq  16.0    10  2014 
      US  2.0    10  2014 
REG   Africa 40.0    10  2014 
      Canada 38.0    10  2014 
      England 40.0    10  2014 
      Iraq  8.0    10  2014 
      Jamaica 40.0    10  2014 
      US  32.0    10  2014 
VACP  Iraq  16.0    10  2014 
VTO   US  6.0    10  2014 

什麼我想要要做的是將Pay_Code組分組,以便進一步彙總。一些看起來是這樣的:

Pay Code2   Pay Code Site Sum of Hours  Week  Year 
OT     OT   Africa 8.0    10  2014 
           Jamaica 5.0    10  2014 
Paid Shrink   PERS  Canada 2.0    10  2014 
           Iraq  16.0    10  2014 
           US  2.0    10  2014 
        VACP  Iraq  16.0    10  2014 
REG     REG   Africa 40.0    10  2014 
           Canada 38.0    10  2014 
           England 40.0    10  2014 
           Iraq  8.0    10  2014 
           Jamaica 40.0    10  2014 
           US  32.0    10  2014 
Unpaid Shrink  VTO    US  6.0    10  2014 

的目標是通過網站來報告Pay_Code2場,按周,但Pay_Code2場在表中不存在。現在我查詢大量的數據並使用數據透視表對我的行進行分組。如果可能的話,我想在MySQL中這樣做。

+1

什麼是「付費收縮」,「REG REG」,「未付費收縮」? – Taryn

+0

爲什麼不添加一列「pay_code_2」或查找表? – pce

+0

@pce - 我有RO表,所以我不能添加任何字段。我不知道MySQL方法來設置組,即付費收縮= VACP + PERS,未付費收縮= VTO + LOA等。 –

回答

1

聽起來好像您正嘗試基於PayCode值創建新類別。你可以嘗試這樣的事情:

SELECT CASE 
     WHEN Pay_Code = 'OT' THEN 'OT' 
     WHEN Pay_Code IN ('VACP','PERS') THEN 'Paid Shrink' 
     WHEN Pay_Code = 'REG' THEN 'REG' 
     WHEN Pay_Code IN ('VTO','LOA','BER') THEN 'Unpaid Shrink' 
     ELSE 'Unknown' 
     END as PayCode_2 
     ,YEAR(Date), WEEK(Date,4), SUM(Hours), Site, Pay_Code 
FROM table 
GROUP BY PayCode_2, Pay_Code, Site, YEAR(Date), WEEK(Date,4) 
+0

完美!那就是訣竅。謝謝您的幫助! –