2016-04-27 6 views
0

Oracle SQL Developerで完全に機能するSQLがあります。Excel経由でOracle SQLを呼び出すパラメータが読み取られない

SQL:pulls dayを基準にして、その月の日を定義し、その日のシフトと時間を指定します。

3つの日付パラメータを動的に変更できるようにしようとしています。

SQL:完璧同様

=TEXT(today,"YYYY-MM-DD") 

Excelのセルが表示されますが、私はパラメータを使用してSQLを実行した場合、それは

を "表現が見つからない" 状態:

select t.*, dsp.day_work_hours as SHIFT from 
(select employee, decode(extract(day from date '2016-05-17'), 1, day_1, 2, day_2, 3, day_3, 4, day_4, 5, day_5, 6, day_6,7, day_7,8, day_8,9, day_9,10, day_10, 11, day_11, 12, day_12, 13,day_13, 14,day_14,15,day_15,16,day_16,17,day_17,18,day_18,19,day_19,20,day_20,21,day_21,22,day_22,23,day_23,24,day_24,25,day_25,26,day_26,27,day_27,28,day_28,day_29,30,day_30,31,day_31) as day_shift 
from odb.location_site_emp_schl_tmplt 
where group_month = extract(month from date '2016-05-17') 
and group_year = extract(year from date '2016-05-17')) T 
inner join odb.daily_shift_pattern dsp on dsp.day_pattern = t.day_shift 

EXCELのセルの数式、それが参照しています

これはなぜ機能しないのでしょうか?

答えて

1

これをテストするのに便利なOracleを持っていないと、Excelが日付を整数値として保存するという問題があると思います。したがって、表示がSQLの文字列と一致しているように見えますが、パラメータ化されたクエリに渡される実際の値は反映されません。

私の提案は、3つのパラメータを使用して、それぞれ1日、1ヶ月、1年のパラメータを使用することです。パフォーマンスの向上(日付抽出なし)のほかに、Excelとクエリパラメータの間で値の型が一致することも保証されます。

ので、クエリは次のようになります。

select t.*, dsp.day_work_hours as SHIFT from 
(select employee, decode(param1, 1, day_1, 2, day_2, 3, day_3, 4, day_4, 5, day_5, 6, day_6,7, day_7,8, day_8,9, day_9,10, day_10, 11, day_11, 12, day_12, 13,day_13, 14,day_14,15,day_15,16,day_16,17,day_17,18,day_18,19,day_19,20,day_20,21,day_21,22,day_22,23,day_23,24,day_24,25,day_25,26,day_26,27,day_27,28,day_28,day_29,30,day_30,31,day_31) as day_shift 
from odb.location_site_emp_schl_tmplt 
where group_month = param2 
and group_year = param3) T 
inner join odb.daily_shift_pattern dsp on dsp.day_pattern = t.day_shift 
+0

完璧!本当にありがとう!それはずっと簡単です! –

関連する問題