如何将行数据作为列进行转移并在SQL

时间:2016-06-28 09:31:39

标签: sql oracle pivot

我有一个列名为 ExDescription,Code,Week00,QtySold 的表。 Week00 列包含 Week1,week2,week3,week4等值... Week53

现在,我需要编写一个查询来将 Week00 值打印为列名称及其值来自SUM(QtySold)。我尝试过类似下面的内容,但没有达到结果。

                select * from week_report1            
            pivot (SUM (QtySold) for week_00 in ([Week1],
            [Week2],
            [Week3],
            [Week4],
            [Week5],
            [Week6],
            [Week7],
            [Week8],
            [Week9],
            .........
            [Week52],
            [Week53])) as MaxIn
            where Code in ('99');

我附加了所需输出的excel枢轴显示,以便更好地了解我想要做的事情。 EXCEL PIVOT DESIGN

2 个答案:

答案 0 :(得分:1)

不确定这是否适合您,但请尝试一下。(if(isset($_POST['submitted'])) { //or you can store it in session also.so that you can redirect it from anywhere. if($fgmembersite->Login()) { $fgmembersite->RedirectToURL($comingFrom); } }

}

MySQL

答案 1 :(得分:1)

Oracle安装程序

CREATE TABLE table_name (
  ExDescription VARCHAR2(20),
  Code          INT,
  Week00        VARCHAR2(6),
  QtySold       INT
);

-- Some random data:
INSERT INTO table_name ( ExDescription, Code, Week00, QtySold )
  SELECT DBMS_RANDOM.STRING('X',10),
         99,
         'Week' || LEVEL,
         ROUND( DBMS_RANDOM.VALUE(0,101)-0.5)
  FROM   DUAL
  CONNECT BY LEVEL <= 53;

SELECT * FROM table_name;

EXDESCRIPTION              CODE WEEK00    QTYSOLD
-------------------- ---------- ------ ----------
V01WLMUC50                   99 Week1          74 
MT0HLG35FH                   99 Week2          53 
QSXPKDNDPO                   99 Week3           0 
...

<强>查询

SELECT *
FROM   ( SELECT Code, Week00, QtySold FROM table_name WHERE code = 99 )
PIVOT ( SUM( QtySold ) FOR Week00 IN (
  'Week1' AS Week1,
  'Week2' AS Week2,
  'Week3' AS Week3
  -- ...
) );

<强>输出

      CODE      WEEK1      WEEK2      WEEK3
---------- ---------- ---------- ----------
        99         74         53          0 
相关问题