gpt4 book ai didi

mysql - 如何组合多个查询

转载 作者:行者123 更新时间:2023-11-29 05:03:09 25 4
gpt4 key购买 nike

我有下表:

表名:统计

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

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

最佳答案

您实际上需要创建一个新表来存储未透视的数据。这可以通过将查询包装在 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;

关于mysql - 如何组合多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54012397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com