Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL按行分组_Mysql_Sql_Group By_Pivot Table_Summarization - Fatal编程技术网

MySQL按行分组

MySQL按行分组,mysql,sql,group-by,pivot-table,summarization,Mysql,Sql,Group By,Pivot Table,Summarization,我有一张这样的桌子: 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

我有一张这样的桌子:

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


此查询:

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_代码组分组,以便进一步汇总。看起来像这样的东西:

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中这样做。

听起来您正试图基于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)

什么是
pay Shrink
REG REG
pay Shrink
?为什么不添加一列“pay\u code\u 2”或一个查找表?@pce-我有RO到表中,所以我不能添加任何字段。我不知道设置组的MySQL方法,即Pay Shrink=VACP+PERS、Pay Shrink=VTO+LOA等@bluefeet-Pay_Code2标题下的所有项目都是分组行。例如,付费收缩=VACP+PERS、REG=REG、OT=OT、未付费收缩=VTO+LOA+BER等。目前我正在使用数据透视表将行分组在一起。如果可能的话,我想使用MySQL代码来完成这项工作,这样工作就可以在DB服务器上完成,并且查询不会返回太多数据。