Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 缺失表达_Sql_Oracle_Oracle11g_Oracle10g - Fatal编程技术网

Sql 缺失表达

Sql 缺失表达,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等月份算起的一些日期。。。它不会包含所有的日期 ___________________________________

我有两张表,其中一张只包含日期,如

表1:从日期中选择显示日期-将显示整个月的日期01-31

____________________________
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 expr1

Hey@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;