根据某些条件需要使用不同的Join

时间:2017-01-17 03:33:25

标签: sql oracle join case

我们在SQL查询中传递了一些参数。 如果这些参数中的任何一个不为null,那么我们设置一个值。 基于该值,我必须使用不同的连接来连接两个表。 请在下面找到代码:

update test_table tt join
       (select feature , min(sprint) as minsprint
        from TEST_TABLE
        group by feature
        having count(distinct sprint) > 1
       ) ttt
       on tt.feature = ttt.feature and
          tt.sprint > ttt.minsprint
    set tt.review = 'Feature File Modified';

当我尝试执行此查询时,我收到以下错误消息。 ORA-00933:SQL命令未正确结束

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您可以对{both}使用LEFT JOIN,然后在INNER JOIN子句中转换回WHERE

SELECT . . .
FROM csds_prod_owner.inbound_message im LEFT JOIN
     ctds_order co
     ON (CSDS_ONLY = 'Y' and im.object_key_n = co.order_id) or
        (CSDS_ONLY <> 'Y' and (im.object_key_n = decode(co.non_csds_order, 'Y', DECODE( TRANSLATE(co.source_order_id,'0123456789',' '), NULL, co.source_order_id,-1),co.order_id))
WHERE CSDS_ONLY <> 'Y' OR co.order_id is not null

我应该补充说,当decode()语句更容易理解时,我并不真正赞同case。但是,我没有修改代码的这一方面。