如何合并多个查询

时间:2019-01-02 19:57:50

标签: mysql sql

我有下表:

表名称:STAT

Region   M07  M08 M09 
---------------------
P1       0    1   0    
P2       0    0   0   
P3       2    0   0    
P4       0    0   0     
P5       0    0   0     
P6       0    0   0   
P7       9    0   3  

我取消了TABLE STAT上的月份列,其中包含数值。 获得结果

---------------------
Region   Month  Qty
---------------------
P1      M07    0
P1      M08    1
P1      M09    0
P2      M07    0
P2      M08    0
P2      M09    0

UNPIVOT是使用此代码完成的

select Region, month, qty FROM
(
    SELECT Region, 'M07' AS month, M07 AS qty from STAT
    UNION ALL
    SELECT Region, 'M08' AS month, M08 AS qty from STAT
    UNION ALL 
    SELECT Region, 'M09' AS month, M09 AS qty from STAT
)x

我现在需要向该未透视的数据集添加一个新列。 例如名为“ PROFILE”的列。 我尝试将代码编写为

ALTER TABLE STAT
ADD COLUMN `Profile` CHAR(8) NOT NULL DEFAULT 'MI';

然后,我尝试显示未编写数据集的结果和通过编写添加的新列

SELECT * from STAT

但是,现在我看到新列已添加到原始数据集中,但是我看不到未透视的数据。我希望看到未更改的数据和最后添加的新列。 我假设我需要在代码的关键部分的某个地方写一个ALTER表。这里的一些帮助将不胜感激吗?

1 个答案:

答案 0 :(得分:3)

您实际上需要创建一个新表来存储未透视的数据。这可以通过将查询包装在CREATE TABLE ... AS SELECT语句中来实现。

CREATE TABLE stat2 AS
SELECT region, 'M07' AS month, M07 AS qty from stat
UNION ALL
SELECT region, 'M08', M08 AS from stat
UNION ALL 
SELECT region, 'M09', M09 AS from stat;

那你可以做:

ALTER TABLE STAT2
ADD COLUMN `Profile` CHAR(8) NOT NULL DEFAULT 'MI';

当然,

SELECT * from STAT2;