2016-11-03 4 views
0

現在の日にすべての予定:SQL - 私は、クエリを次のようしていると私はfollowigエラーを取得する

をサブクエリがで導入されていない場合のみ1式が選択リストで指定することができます私はその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

サブ選択条件で使用できるカラムは1つだけです – 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

オラクルは**現在**を持っていません。これは、SQL標準 'current_timestamp'またはOracle固有の' sysdate'を使用します。 –

+0

うん。私が最後にオラクルを台無しにしてから数ヶ月間ですが、私の間違いです。いずれにしても、そのアイデアがはっきりしていることを願っています。 – FDavidov

関連する問題