DB2 case when语句用法

coff_cola 2012-09-14 03:31:08
我问一个动态控制表连接条件的

SELECT
A.ORDER_NUMBER,
A.ORIGINAL_ORDER_NUMBER,
A.ORDER_TYPE,
A.BULK_TRADE_FLAG,
A.ORDER_STATUS_CODE,
A.DEAL_LOG_CODE,
A.LEGAL_ENTITY_CODE,
B.STATUS_TYPE
FROM OMS.A A
LEFT JOIN OMS.B B ON ( A.ORIGINAL_ORDER_NUMBER = B.ORIGINAL_ORDER_NUMBER
AND
CASE WHEN A.LEGAL_ENTITY_CODE in ('509','637')
THEN
A.CUSTOMER_NUMBER = B.CUSTOMER_NUMBER AND A.SUB_ACCOUNT_NUMBER = B.SUB_ACCOUNT_NUMBER
ELSE
1=1
END
)


意思就是当A.LEGAL_ENTITY_CODE in ('509','637') 时候A 和 B的连接条件是
A.ORIGINAL_ORDER_NUMBER = B.ORIGINAL_ORDER_NUMBER
AND
A.CUSTOMER_NUMBER = B.CUSTOMER_NUMBER
AND
A.SUB_ACCOUNT_NUMBER = B.SUB_ACCOUNT_NUMBER


否则就是 A.ORIGINAL_ORDER_NUMBER = B.ORIGINAL_ORDER_NUMBER

不过then后面好像不能用这样的表达式,请问有没有其他写法或者函数可以实现的?
...全文
636 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwwwb 2012-09-14
  • 打赏
  • 举报
回复
分2条SQL语句执行

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧