select buy_date ,
null,
product_name
from buy_detail
union all
select null,
sell_date,
product_name
from buy_detail ;大概是这样的格式,把一张入库表和出库表合并检索,对应的出库表没入库日期,入库表没出库日期,检索就用null来对应。在sqlserver2000查询正常,在oracle数据库上就错误,单表查询都正常的。试着用‘’来代替也不行。
同样的数值型、字符串型用union all 怎么对应才正确?万分紧急!!
null,
product_name
from buy_detail
union all
select null,
sell_date,
product_name
from buy_detail ;大概是这样的格式,把一张入库表和出库表合并检索,对应的出库表没入库日期,入库表没出库日期,检索就用null来对应。在sqlserver2000查询正常,在oracle数据库上就错误,单表查询都正常的。试着用‘’来代替也不行。
同样的数值型、字符串型用union all 怎么对应才正确?万分紧急!!
SQL> DESC TEST_DATE;
Name Type Nullable Default Comments
-------- ------------ -------- ------- --------
ADDTIME DATE Y
A NUMBER Y
B NUMBER Y
C NUMBER Y
TYPENAME VARCHAR2(3) Y
MYCOUNTS NUMBER(25,2) Y SQL>
SQL> SELECT A,
2 NULL,
3 B
4 FROM TEST_DATE
5 UNION ALL
6 SELECT NULL,
7 ADDTIME,
8 B
9 FROM TEST_DATE
10 WHERE ROWNUM < 1; A NULL B
---------- ----------- ----------
20 30
10 30
11 32
12 33
13 39
25 56
36 30
20 36
20 90
30 24
13 23
15 77
55 56
33 42
44 43
33 32
26 32
76 16
19 23
21 29 A NULL B
---------- ----------- ----------
39 2721 rows selectedSQL>
select buy_date ,
null sell_date,
product_name
from buy_detail
union all
select null buy_date ,
sell_date,
product_name
from buy_detail
我的表里用null代替的有date型,也有数值型和字符型的,是否都能用null代替的?提示是:ora-01790:表达式必须具有与对应表达式相同的数据类型。
-- 我换成C和ADDTIME去UNION ALL就出错了,因为C列是NUMBER型而ADDTIME列是DATE型。应该你的表有同样的问题,两个字段数据类型不匹配。
SQL> SELECT A,
2 C,
3 B
4 FROM TEST_DATE
5 UNION ALL
6 SELECT NULL,
7 ADDTIME,
8 B
9 FROM TEST_DATE
10 WHERE ROWNUM < 1;SELECT A,
C,
B
FROM TEST_DATE
UNION ALL
SELECT NULL,
ADDTIME,
B
FROM TEST_DATE
WHERE ROWNUM < 1ORA-01790: expression must have same datatype as corresponding expression
是否都能用null代替的 -- 如果符合需求的话,可以。
select
a.wpmc,
a.wpgg,
a.wpdw,
null
union all
select
a.wpmc,
a.wpgg,
a.wpdw,
b.yssj
from a,b ;
第四行的字段开始报错,删掉第四个字段没有问题,加上第四个就出类型问题,是date型。
decode(sell_date,null,0,sell_date),
product_name
from buy_detail;
a.wpmc, --varchar2
a.wpgg, --varchar2
a.wpdw, --varchar2
null,
c.yssj --date
from a,c
union all
select
a.wpmc, --varchar2
a.wpgg, --varchar2
a.wpdw, --varchar2
b.yssj, --date
null
from a,b ;
a.wpmc, --varchar2
a.wpgg, --varchar2
a.wpdw, --varchar2
decode(a.test1,null,0,a.test1),
decode(c.yssj,null,0,c.yssj), --date
from a,c where a.id=c.id --是否要回条件?
union all
select
a.wpmc, --varchar2
a.wpgg, --varchar2
a.wpdw, --varchar2
decode(b.yssj,null,0,b.yssj), --date
decode(a.test2,null,0,a.test2)
from a,b where a.id=b.id ; --是否要回条件?
我这个null放在这里是因为相应表无对应字段,填个空补位的
刚才用sqlplus查一些数据想粘出来,结果一直在慢慢滚数据,煞不了车(远程连着客户的破机器...)。请问怎么途中终止检索?
小弟一般用pb的查询器做查询,这个用不来。
a.wpmc, --varchar2
a.wpgg, --varchar2
a.wpdw, --varchar2
null,
c.yssj --date
from a,c
union all
select
a.wpmc, --varchar2
a.wpgg, --varchar2
a.wpdw, --varchar2
b.yssj, --date
null
from a,b ; -- 这个语句应该没错的,如果有问题应该是数据的问题。
select buy_date ,
to_date(null) sell_date,
product_name
from buy_detail
union all
select to_date(null) buy_date,
sell_date,
product_name
from buy_detail ;
'' sell_date,
product_name
from buy_detail
union all
select '' buy_date,
to_char(sell_date,'yyyy-mm-dd') ,
product_name
from buy_detail ;可以否?