如何组合多个查询

hmmo2u0o  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(301)

我有下表:
表名: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

我取消了stat表中包含数值的months列。获得的结果

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

解压是用这个代码完成的

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

但是,我现在看到新的列添加到原始数据集中,但是我看不到未插入的数据。我想看看未插入的数据和最后一个新的列添加。我假设我需要在代码的unpivot部分的某处编写alter表。如果能帮上点忙,我会很感激的?

bvuwiixz

bvuwiixz1#

实际上,您需要创建一个新表来存储未归档的数据。这可以通过 Package 查询来实现 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;

相关问题