【发布时间】:2019-01-02 19:57:49
【问题描述】:
我有下表:
表名: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
但是,我现在看到添加到原始数据集中的新列,但我看不到未透视的数据。我想查看未透视的数据和添加的最终新列。 我假设我需要在代码的 unpivot 部分的某处编写一个 ALTER 表。一些帮助将不胜感激?
【问题讨论】:
-
您的“UNPIVOT”生成了一个结果集;它没有修改原始的 STAT 表。一般来说,所有 SELECT 语句都是如此;他们不会修改他们从中选择的表。
-
@RobertHarvey 谢谢你是正确的。我需要在我的 unpivot 部分的代码的 SELECT 部分中编辑什么来更改表?
-
这可能不是正确的方法。不要将 DDL(数据定义)语句与 DML(数据操作)语句混用。
-
@RobertHarvey 谢谢你的来信。我会调查一下。我对 SQL 很陌生。
标签: mysql sql date create-table unpivot