2016-11-03 2 views
0

에 대한 모든 약속은 내가 ​​쿼리를 다음과하고 난 followig 오류 얻을 :SQL - 현재 일

서브 쿼리가 도입되지 않은 경우 하나 개의 표현이 선택 목록에 지정할 수 있습니다

내가 그 dodate을 원하는 EXISTS를 오늘 날짜보다 작아서 "완료"로 표시되지 않은 약속이있는 경우 쿼리가 현재의 모든 약속을 나열합니다.

select 
    dodate, regdate,header,starttime,stoptime,userid,custid,objid,infoid,aname 
from fkms.appointment 
where 
    done=0 and del=0 
    and dodate > (SELECT dodate, 
         DATEADD(d,dodate - 2440587,'1970-01-01'), 
         ts, 
         DATEADD(s,ts,'19700101 01:0:00:000') 
        FROM fkms.appointment) 
    and userid='da' 

팁이 있습니까?

+2

단일 값을 여러 열의 여러 값을 반환하는 subselect와 비교하려고합니다 :'dodate> (SELECT dodate, .... from)'어떻게 작동합니까? –

+0

하위 선택 조건에서 하나의 열만 사용할 수 있습니다. – Mansoor

+0

원하는 항목입니까? 'done = 0 및 del = 0이고 dodate> GetDate()'또는'NOW()'또는'sysdate'는 RDBMS에 따라 다릅니다. – sagi

답변

0

내부 SELECT가 둘 ​​이상의 값을 반환하므로 쿼리가 올바르지 않습니다. 변경 :

select 
    dodate, regdate,header,starttime,stoptime,userid,custid,objid,infoid,aname 
    from fkms.appointment 
where done = 0 
    and del = 0 
    and dodate > GETDATE() 
    and userid ='da'; 

참고 : GETDATE()는 SQL-SERVER 기능입니다. 오라클에서는 NOW() 및 기타 DBMS와 유사한 기능을 제공합니다. 필요한 것을 찾으십시오.

+0

오라클은 **하지 않습니다 ** now(). 그것은 SQL 표준'current_timestamp' 또는 오라클 특정'sysdate'를 사용합니다. –

+0

예. 오라클과 내가 마지막으로 혼란스러워 한 지 몇 달이 지났습니다. 어쨌든 그 아이디어가 분명하기를 바랍니다. – FDavidov