我有一个表,它提供了货币汇率的细节,在一年的水平。这是1为每年的记录。我需要将每行转换成12行,以代表在月的数据水平。这就像复制到12行(12个月)的单行和唯一的区别将是在日期列,需要显示12个月。
示例
输入表
身份证 | 日期 | 兑换率 |
---|---|---|
1 | 2022 | 1.8岁 |
二 | 2021 | 二、九 |
必填输出
身份证 | 日期 | 兑换率 |
---|---|---|
1 | 二○二二年一月 | 1.8岁 |
1 | 2022年2月 | 1.8岁 |
1 | 2022年3月 | 1.8岁 |
我的天 | 我的天 | 我的天 |
1 | 2022年12月 | 1.8岁 |
二 | 2021年1月 | 二、九 |
二 | 二○二一年二月 | 二、九 |
我的天 | 我的天 | 我的天 |
二 | 2021年12月 | 二、九 |
等等。
我想创建一个12行的静态表,并将其与我的输入表交叉连接,但我没有批准创建一个新表。
3条答案
按热度按时间i2byvkas1#
不需要创建表;您可以使用子查询或子查询因子分解(
WITH
)子句生成等效项:或者,您可以使用集合:
或行生成器:
其中,对于示例数据:
所有输出:
| ID|日期|汇率|
| --------------|--------------|--------------|
| 1|2022年01月01日00时00分|1.8岁|
| 1|2022年2月1日00时00分|1.8岁|
| ……|……|……|
| 1|2022年12月1日上午00时00分|1.8岁|
| 二|2022年01月01日00时00分|二、九|
| 二|2022年2月1日00时00分|二、九|
| ……|……|……|
| 二|2021年12月1日上午00时00分|二、九|
DATE
是一个保留字,你不应该使用它作为标识符;如果你这样做,那么你需要使用一个带引号的标识符。fiddle
oxf4rvwz2#
它是关于某种行生成器的;这是一个选择
我正在设置日期格式(这样你就知道
what is what
)。结果以该格式显示;你可以切换到Mon-yyyy
或任何其他格式,如果你想-无论是在会话级别,或通过应用to_char
函数,...无论什么。样本数据:
查询从此处开始:
mrfwxfqh3#
其中一个选项是使用LEVEL ... CONNECT BY作为带有ADD_MONTHS()函数的生成器,如下所示: