更新:感谢您的所有帮助家伙!我只需要花一点时间来查看结果,我肯定会标记答案。真的很感谢大家的反馈!从Oracle PL/SQL转换查询到微软T-SQL
我有以下查询需要从Oracel PL/SQL转换为T-SQL来适应数据源更改。我已经完成了隔离逻辑所需的工作(仍然使用PL/SQL编写),只需要调整其余部分。像TO_DATE这样的东西,特别是转换很难,所以我决定转向StackOverflow。
我已经听说了SwisSQL工具,而是因为这是使用该产品的可能性也不大,需要转换单个查询的只是一个孤立事件。任何和所有帮助转换查询使用适当的T-SQL合成器将不胜感激。感谢您的时间和这里的问题:
SELECT
F.TYPE_ID,
TRIM(f.event_type_name),
TRIM(e.event_name),
NVL(trim(e.event_title),' '),
e.cur_event_state,
TO_CHAR(D.EV_START_DT, 'YYYYMMDD') ,
TO_CHAR(D.EV_START_DT,'HH24MI') ,
TO_CHAR(D.EV_END_DT, 'YYYYMMDD') ,
TO_CHAR(D.EV_END_DT,'HH24MI') ,
TO_char(d.EV_START_DT, 'D')
from rooms C,
SP_RESERVATIONS D,
EVENTS E,
event_types f
where @Room = TRIM(replace(C.room_short(+),'-','*'))
AND C.ROOM_ID = D.ROOM_ID
AND D.EVENT_ID = E.EVENT_ID
and e.event_type_id = f.type_id
and f.type_id in ('22','40','70','71','72','105','121','119')
AND (D.EV_START_DT
BETWEEN TO_DATE(:WS-TERM-START-DATE,'YYYYMMDD')
AND TO_DATE(:WS-TERM-END-DATE,'YYYYMMDD')
OR D.EV_END_DT
BETWEEN TO_DATE(:WS-TERM-START-DATE,'YYYYMMDD')
AND TO_DATE(:WS-TERM-END-DATE,'YYYYMMDD'))
and not e.cur_event_state = '59'
谢谢!
而你的问题是??????? – 2012-01-30 22:00:39
在你的过滤器中,你使用了一些像'B.rooms_id'这样的列,但是我没有在你的'FROM'上看到表B' – Lamak 2012-01-30 22:03:49
感谢你接受Lamark。查询已更新为正确的值。 至于我的问题,它是这个查询从PL/SQL转换为T-SQL。 – user1179071 2012-01-30 22:11:02