sql - 使用我指定的日期列创建查询,但无法创建临时表
解决方案
使用子查询因式分解子句 ( WITH
) 生成要加入的日期:
WITH dates ( dt ) AS (
SELECT DATE '2016-07-01' FROM DUAL UNION ALL
SELECT DATE '2017-07-01' FROM DUAL UNION ALL
SELECT DATE '2019-08-01' FROM DUAL
)
SELECT EXTRACT(MONTH FROM d.dt) AS Month,
EXTRACT(YEAR FROM d.dt) AS Year,
NVL2(t.SomeValue, 'Y', 'N') AS "Change?"
FROM dates d
LEFT OUTER JOIN table_name t
ON ( TRUNC(t.effective_date, 'MM') = d.dt )
我想要的输出将包括从 1/2012 开始的每个月和每年。
然后使用递归子查询因式分解子句:
WITH dates ( dt ) AS (
SELECT DATE '2012-01-01' FROM DUAL
UNION ALL
SELECT ADD_MONTHS( dt, 1 )
FROM dates
WHERE ADD_MONTHS( dt, 1 ) <= SYSDATE
)
SELECT EXTRACT(MONTH FROM d.dt) AS Month,
EXTRACT(YEAR FROM d.dt) AS Year,
NVL2(t.SomeValue, 'Y', 'N') AS "Change?"
FROM dates d
LEFT OUTER JOIN table_name t
ON ( TRUNC(t.effective_date, 'MM') = d.dt )
推荐阅读
- python - 将 ckpt 文件转换为冻结推理图
- windows - Cordova Windows build '没有为选定的目标检测到有效的 MSBuild'
- c# - 在 asp.net core 中实现 SOAP 1.2 服务
- postgresql - 如何使用 MIN() 和 GROUP BY 更新列?
- textfield - 用户点击字段时如何将 textFieldStyle 切换为 TextField?
- api - 使用 Grafana API 进行自动身份验证
- google-chrome - Chrome 的 CORS 问题
- glue42 - 如何用自定义应用程序替换默认的 Glue42 工具栏?
- mysql - 物理写入文件已满 - mysql错误
- php - 如何显示从以下代码的输入文本字段中获得的值?