Oracle复杂sql选择查询
我有以下疑问:Oracle复杂sql选择查询,sql,oracle,Sql,Oracle,我有以下疑问: SELECT SUM (UNCOLLECTED) FROM LIQUIDATIONSDETAILS LD WHERE LD.COMPANYID = L.COMPANYID AND LD.GROUPID = L.GROUPID AND LD.PERIODID = L.PERIODID AND LD.FORMTYPE IN (1,
SELECT SUM (UNCOLLECTED)
FROM LIQUIDATIONSDETAILS LD
WHERE LD.COMPANYID = L.COMPANYID
AND LD.GROUPID = L.GROUPID
AND LD.PERIODID = L.PERIODID
AND LD.FORMTYPE IN (1, 2, 3)
当L.PERIODID>'2013-2014'
时,我需要LD.FORMTYPE输入(1,2,3,4)
否则LD.FORMTYPE输入(1,2,3)
有什么想法吗?这可能就是答案
SELECT SUM (UNCOLLECTED)
FROM LIQUIDATIONSDETAILS LD
WHERE LD.COMPANYID = L.COMPANYID
AND LD.GROUPID = L.GROUPID
AND LD.PERIODID = L.PERIODID
AND (L.PERIODID > '2013-2014' AND LD.FORMTYPE IN (1, 2, 3) )
OR (L.PERIODID <= '2013-2014' AND LD.FORMTYPE IN (1, 2, 3,4) )
选择总和(未收款)
来自清算详细信息
其中LD.COMPANYID=L.COMPANYID
并且LD.GROUPID=L.GROUPID
并且LD.PERIODID=L.PERIODID
和(L.PERIODID>'2013-2014'和LD.FORMTYPE IN(1,2,3))
或者(L.PERIODID这可能是答案
SELECT SUM (UNCOLLECTED)
FROM LIQUIDATIONSDETAILS LD
WHERE LD.COMPANYID = L.COMPANYID
AND LD.GROUPID = L.GROUPID
AND LD.PERIODID = L.PERIODID
AND (L.PERIODID > '2013-2014' AND LD.FORMTYPE IN (1, 2, 3) )
OR (L.PERIODID <= '2013-2014' AND LD.FORMTYPE IN (1, 2, 3,4) )
选择总和(未收款)
来自清算详细信息
其中LD.COMPANYID=L.COMPANYID
并且LD.GROUPID=L.GROUPID
并且LD.PERIODID=L.PERIODID
和(L.PERIODID>'2013-2014'和LD.FORMTYPE IN(1,2,3))
或者(L.PERIODID您的查询格式不正确。您有两个表别名,L
和LD
,但未定义L
因为您打算使用JOIN
,所以应该使用显式JOIN
语法。一个简单的规则是:在FROM
子句中不要使用逗号。始终使用显式JOIN
语法:
SELECT SUM(UNCOLLECTED)
FROM LIQUIDATIONSDETAILS LD JOIN
??? L -- I don't know what table "L" refers to
ON LD.COMPANYID = L.COMPANYID AND
LD.GROUPID = L.GROUPID AND
LD.PERIODID = L.PERIODID
WHERE LD.FORMTYPE IN (1, 2, 3) OR
(LD.FORMTYPE = 4 AND L.PERIODID > '2013-2014')
您的查询格式不正确。您有两个表别名,L
和LD
,但未定义L
因为您打算使用JOIN
,所以应该使用显式JOIN
语法。一个简单的规则是:在FROM
子句中不要使用逗号。始终使用显式JOIN
语法:
SELECT SUM(UNCOLLECTED)
FROM LIQUIDATIONSDETAILS LD JOIN
??? L -- I don't know what table "L" refers to
ON LD.COMPANYID = L.COMPANYID AND
LD.GROUPID = L.GROUPID AND
LD.PERIODID = L.PERIODID
WHERE LD.FORMTYPE IN (1, 2, 3) OR
(LD.FORMTYPE = 4 AND L.PERIODID > '2013-2014')
基于时间的周期怎么可能大于“2013-2014”,这是否等于“-1”,它是否需要大于2013或2014?Mathieu PERIODID是一个Varchar列,其值例如为:“2013-2014”“2014-2015”etcI对于oracle来说不太好,但这行得通吗?SUM(未收集)来自清算详细信息LD,其中LD.COMPANYID=L.COMPANYID和LD.GROUPID=L.GROUPID和((LD.PERIODID=L.PERIODID和LD.FORMTYPE IN(1,2,3,4)和LD.PERIODID>2013-2014')或(LD.PERIODID=L.PERIODID和LD.FORMTYPE IN(1,2,3)和LD.PERIODID<2013-2014'))
基于时间的周期怎么可能大于'2013-2014',这是否等于'-1',它是否需要大于2013或2014?Mathieu PERIODID是一个Varchar列,其值例如为:'2013-2014''2014-2015''etcI对于oracle来说不太好,但这行得通吗?SUM(未收集)从清算详细信息LD,其中LD.COMPANYID=L.COMPANYID和LD.GROUPID=L.GROUPID和((LD.PERIODID=L.PERIODID和LD.FORMTYPE IN(1,2,3,4)和LD.PERIODID>2013-2014')或(LD.PERIODID=L.PERIODID和LD.FORMTYPE IN(1,2,3)和LD.PERIODID<2013-2014'))