【发布时间】:2017-11-24 09:11:20
【问题描述】:
我有一个表“table1”,其中一年中的月份按行编号从 1 到 12,每月 1 到 31 天以列的形式编号。
还有另一个表“table2”,其中存储了日期和其他一些值。日期具有 DATE 数据类型。我需要从那个'table2'中获取日期并比较月份和日期的值,并相应地将值插入'table1'。 示例如果“table2”中的日期是 21-JUN-2017,则应在“table1”的第 21 列(日)和第 6 行(月)中插入值。如何使用 SQL 在 Oracle 11g 中实现相同的功能?
提前感谢您的帮助。
【问题讨论】:
-
一个表没有固定的行数......你可以有一个列用于一年中的月份,并且每个月的每一天都有 31 列,但说你有“一年中的几个月”从 1 到 12 行编号”没有多大意义。请发布minimal reproducible example,包括您的表的 DDL 语句以及它们包含的数据的任何 DML 语句。
-
它看起来像
to_char()并带有适当的格式掩码是您正在寻找的。提示,数字月份的格式是mm,天的格式是dd。 -
编辑您的问题并提供示例数据和所需的结果。
-
table1 的 DDL:- CREATE TABLE table1(月数,1 数,2 数,...31 数,); table1 的 DML:- 插入 table1(Month) VALUES (1);....插入 table1(Month) VALUES (12);我需要做什么:-假设我需要在 table1 中插入 value=x 并且从 table2 检索的日期是 21-JUN-2017 UPDATE table1 SET 21 = x WHERE Month=06;
-
如果
table2中有两个不同的行,日期相同,比如 21-JUN-2017,你会怎么做?您打算如何将两个不同的值插入到同一行的同一列中?