2011-05-19 32 views
1

我需要從數據庫查詢值1或0,這反過來下一步應該做的事:有條件的PL/SQL輸出

  • 從表中獲得一些字段的值
  • 該字段值與一些文字(在查詢本身定義)
  • 如果值與文字不匹配,並且查詢在特定時間段(即從上午9:00到上午10:00)執行,則應返回0,否則爲1
  • 它包含多個結果集(行)響應(請參閱更多)

到目前爲止,我有下一件事情:從table_name的

選擇INSTR(場, '文字'),其中TRUNC(時間)= TRUNC(SYSDATE)

從表返回1 table_name包含'literal'(where子句檢查是否截斷時間 in table_name等於截斷的系統時間)。

我能不明白的是我怎麼能:

  • 引進時間限制(基本上,如果從9:00 AM至10:00 AM總是返回1)
  • 處理多個響應行,這意味着如果任何響應行將返回1,那麼我只需要1行,其中有1個值

在此先感謝。

P.S .:請留下評論問題是否有模糊之處。

回答

3

聽起來你想要一個CASE語句。如果您發佈DDL來創建表格,使用一些DML來填充數據以及預期的輸出,那將會很有幫助。如果查詢在上午9點和上午10點之間運行,您似乎對要返回的內容有衝突的要求。你說「如果...查詢在特定時間段內執行......它應該返回0,否則1」,但後來你會說「如果它從上午9點到上午10點總是返回1」)。我的猜測是,你想要的東西像

SELECT MAX(zero_or_one) 
    FROM (
     SELECT (CASE WHEN to_char(sysdate, 'HH24') = '09' 
        THEN 1 
        WHEN instr(column_name, 'literal') > 0 
        THEN 1 
        ELSE 0 
       END) zero_or_one 
     FROM table_name 
     WHERE trunc(date_column) = trunc(sysdate) 
     ) 
+0

它並沒有真正反映整個事情,但帶領我一個正確的解決方案。謝謝! – 2011-06-06 15:39:16