2013-11-15 2 views
0

У меня есть запрос 2.
Я пытаюсь присоединиться к ним, поэтому я просто пишу экспорт из одного вместо того, чтобы вручную присоединяться к ним в excel.Как присоединиться к 2 запросам в одном в EXCEL СОЕДИНЕНИЕ ORACLE

(SELECT 
     b.OUT_NO, 
     a.ACCNO, 
     a.BILL_ACCNO, 
     a.NAME, 
     a.HOUSE_NO, 
     a.STREET, 
     a.HOUSE_NO2, 
     a.ZIP, 
     a.ID, 
     b.TIME_STAMP, 
     b.REST_DATE, 
     c.RESTORED_TIME, 
     b.OUT_CMNT 
    FROM brook.account a, 
     brook.problem b, 
     brook.history c 
    WHERE c.OUT_NO = b.OUT_NO 
    AND a.ID = c.ID 
    AND ( (a.NAME Is Not Null) 
     AND (a.DISC Is Null) 
     AND (b.TIME_STAMP>?) 
     AND (c.RESTORED_TIME<?)) 
) 

и

(SELECT 
     b.OUT_NO, 
     a.ACCNO, 
     a.BILL_ACCNO, 
     a.NAME, 
     a.HOUSE_NO, 
     a.STREET, 
     a.HOUSE_NO2, 
     a.ZIP, 
     a.ID, 
     b.TIME_STAMP, 
     b.REST_DATE, 
     c.RESTORED_TIME, 
     b.OUT_CMNT 
    FROM brook.account a, 
     brook.problem b, 
     brook.history c 
WHERE c.OUTAGE_NO = b.OUTAGE_NO 
    AND a.ID = c.ID 
    AND ( (a.NAME Is Not Null) 
     AND (a.DISC Is Null) 
     AND (b.TIME_STAMP > ? And b.TIME_STAMP < ?) 
     AND (c.RESTORED_TIME > ? And c.RESTORED_TIME < ?) 
     ) 
) 

Как я могу присоединиться к этим 2? в 1, я пробовал UNION ALL, но получаю ora-01847 day of month must be between 1 and last day of month ERROR.

? - параметр, он связан с ячейками в электронной таблице. формат параметра данных excel. 11/04/2013 00:00:00

Благодаря

ответ

0

Ошибка о формате даты, а не о союзе.
Если вы передаете значения ячеек в качестве параметров строки, Oracle пытается преобразовать их в даты в comapre со столбцами значений date или timestamp в столбцах таблицы. Чтобы сделать это преобразование, Oracle использует внутреннее значение по умолчанию date representation format, которое не является mm/dd/yyyy hh24:mi:ss в вашем случае.

Есть 2 возможности исправить ситуацию:

  1. параметры Pass с date типа для запроса и преобразования значения даты, прежде чем передать его в Oracle. Проверьте examples on MSDN и описание методов CreateParameter и Parameters.Append.

  2. Преобразование значений в даты в запросе с помощью to_date Функция Oracle.

Изменить условия в запросе от

AND (b.TIME_STAMP>?) 
    AND (c.RESTORED_TIME<?)) 

и

AND (b.TIME_STAMP > ? And b.TIME_STAMP < ?) 
    AND (c.RESTORED_TIME > ? And c.RESTORED_TIME < ?) 

к

AND (b.TIME_STAMP > to_date(?,'mm/dd/yyyy hh24:mi:ss')) 
    AND (c.RESTORED_TIME < to_date(?,'mm/dd/yyyy hh24:mi:ss'))) 

и

AND (
     b.TIME_STAMP > to_date(?,'mm/dd/yyyy hh24:mi:ss') 
     And 
     b.TIME_STAMP < to_date(?,'mm/dd/yyyy hh24:mi:ss') 
     ) 
    AND (
     c.RESTORED_TIME > to_date(?,'mm/dd/yyyy hh24:mi:ss') 
     And 
     c.RESTORED_TIME < to_date(?,'mm/dd/yyyy hh24:mi:ss') 
     )