Sql 缺失表达
我有两张表,其中一张只包含日期,如 表1:从日期中选择显示日期-将显示整个月的日期01-31Sql 缺失表达,sql,oracle,oracle11g,oracle10g,Sql,Oracle,Oracle11g,Oracle10g,我有两张表,其中一张只包含日期,如 表1:从日期中选择显示日期-将显示整个月的日期01-31 ____________________________ display_date ___________________ 01-OCT-14 02-OCT-14 03-OCT-14 .....SO ON 表2:选择显示日期、工作日、日、从员工日算起的月份-其中包含从01、04、05等月份算起的一些日期。。。它不会包含所有的日期 ___________________________________
____________________________
display_date
___________________
01-OCT-14
02-OCT-14
03-OCT-14
.....SO ON
表2:选择显示日期、工作日、日、从员工日算起的月份-其中包含从01、04、05等月份算起的一些日期。。。它不会包含所有的日期
______________________________________________
|display_date | weekday | day | month |
-----------------------------------------------
01-OCT-14 7 01 10
04-OCT-14 5 04 10
_______________________________________________
我需要连接这两个表,并且我必须获得记录的所有日期和空值的输出,我需要如下所示的输出
_____________________________________________
display_date | weekday | day | month |
_______________________________________________
01-OCT-14 7 01 10
02-OCT-14 5 02 10
03-OCT-14 4 03 10
select a.display_date, b.weekday, b.day, b.month from (subquery1) a, (subquery2) b where TO_CHAR(TO_DATE(a.DISPLAY_DATE,'DD-MON-RR'),'DD')= TO_CHAR(b.DAY_NUMBER)(+);
子查询1:选择第一个表值
子查询2:获取secong表值
我得到丢失的表达式错误
我需要在DISPLAY_DATE列中获取公共值。如果表2中没有DISPLAY_DATE的值,那么它必须连接表1中的结果。
我不能使用union,因为表1和表2中的列不同
有什么想法吗?你需要使用左连接
我想你需要这样的东西:
select a.display_date,
nvl(b.weekday, to_char(a.display_date, 'D')) weekday,
nvl(b.day, to_char(a.display_date, 'DD')) day,
nvl(b.month, to_char(a.display_date, 'MM')) month
from table1 a left join table2 b on a.display_date = b.display_date
order by a.display_date;
Oracle建议避免使用+因为它已经过时了
NVLexpr1,expr2=如果expr1为空,则expr2 else expr1Hey@RADAR我还有一个问题。如何将大字符串传递给存储过程?。当我使用clob时,它抛出的标识符太长error@user3707681,我不确定这个问题,因为我是oracle的新手,可能需要问另一个问题
select a.display_date,
nvl(b.weekday, to_char(a.display_date, 'D')) weekday,
nvl(b.day, to_char(a.display_date, 'DD')) day,
nvl(b.month, to_char(a.display_date, 'MM')) month
from table1 a left join table2 b on a.display_date = b.display_date
order by a.display_date;