Sql 在“选择内部联接”中选择
我尝试在select上进行内部联接。我的select语句如下所示Sql 在“选择内部联接”中选择,sql,oracle,ora-00911,Sql,Oracle,Ora 00911,我尝试在select上进行内部联接。我的select语句如下所示 SELECT con.fpd_no, con.contract_no, cm.cust_name, (select cm.cust_name, TRIM(cm.address) || ', ' || TRIM(cm.zipcode) || ', ' || TRIM(klm.kelurahan_desc) || ', ' || TRIM(kcm.kecamatan_desc) ||
SELECT con.fpd_no,
con.contract_no,
cm.cust_name,
(select cm.cust_name, TRIM(cm.address) || ', ' || TRIM(cm.zipcode) || ', ' || TRIM(klm.kelurahan_desc) || ', ' || TRIM(kcm.kecamatan_desc) || ', ' || TRIM(kbm.kabupaten_desc) || ', ' || TRIM(prm.propinsi_desc)
from customer_master cm
inner join kelurahan_master klm on klm.kelurahan_id=cm.kelurahan_id
inner join kecamatan_master kcm on kcm.kecamatan_id=klm.kecamatan_id
inner join kabupaten_master kbm on kbm.kabupaten_id=kcm.kabupaten_id
inner join propinsi_master prm on prm.propinsi_id=kbm.propinsi_id;) as address,
con.principal_amount
FROM contract con
JOIN customer_master cm ON cm.cust_no = con.cust_no
WHERE con.deal_code = 'A005'
AND con.fpd_date BETWEEN '01-01-2016' AND '31-01-2016'
AND con.fpd_no = '0103006116'
AND con.objt_group = 'MOTOR';
但我得到了这个错误:
ORA-00911:无效字符
试试这个:
删除subselect上的分号,并确保关于select只返回一行
SELECT con.fpd_no, con.contract_no, cm.cust_name, (select distinct cm.cust_name, TRIM(cm.address) || ', ' || TRIM(cm.zipcode) || ', ' || TRIM(klm.kelurahan_desc) || ', ' || TRIM(kcm.kecamatan_desc) || ', ' || TRIM(kbm.kabupaten_desc) || ', ' || TRIM(prm.propinsi_desc)
from customer_master cm
inner join kelurahan_master klm on klm.kelurahan_id=cm.kelurahan_id
inner join kecamatan_master kcm on kcm.kecamatan_id=klm.kecamatan_id
inner join kabupaten_master kbm on kbm.kabupaten_id=kcm.kabupaten_id
inner join propinsi_master prm on prm.propinsi_id=kbm.propinsi_id) as address, con.principal_amount
FROM contract con
JOIN customer_master cm ON cm.cust_no = con.cust_no
WHERE con.deal_code = 'A005'
AND con.fpd_date BETWEEN '01-01-2016' AND '31-01-2016'
AND con.fpd_no = '0103006116'
AND con.objt_group = 'MOTOR';
您希望SQL如何在“地址”字段和表之间建立链接?为什么不在后一个请求中与主表进行连接,并根据主select中的表计算地址列,如常规SQL语法?
…prm.propensi_id=kbm.propensi_id;)代码>-那个分号在那里干什么?移除它;它除了位于sql语句末尾之外没有其他位置。另外,con.fpd_date介于'01-01-2016'和'31-01-2016'之间。
:不要依赖隐式日期转换(假设con.fpd_date为日期数据类型)-而是使用日期文字(例如,date 2016-01-01
)或通过转换为日期()
(例如,转换为日期('01/01/2016','dd mm/yyyyyy')
)。如果con.fpd_date包含午夜以外的时间,您将排除2016年1月31日午夜之后的数据。这就是你想要的吗?