Sql 其中,除非column.b=值,否则column.a不为null

Sql 其中,除非column.b=值,否则column.a不为null,sql,teradata,Sql,Teradata,我有一个查询正在提取一些数据。这是我的WHERE子句 where p.invc_dt BETWEEN 1150101 AND 1160131 and o.Tracking_num is not null 此表包含订单数据和一个order\u CD列,用于确定销售类型或是否退款。退款没有关联的跟踪编号。我如何调整我的where语句来表示 and o.Tracking_num is not null **unless** `ORDER_CD` is REFUND 您可以使用布尔逻辑实

我有一个查询正在提取一些数据。这是我的
WHERE
子句

where p.invc_dt  BETWEEN 1150101 AND 1160131    
and o.Tracking_num is not null 
此表包含订单数据和一个
order\u CD
列,用于确定销售类型或是否退款。退款没有关联的跟踪编号。我如何调整我的where语句来表示

and o.Tracking_num is not null **unless** `ORDER_CD` is REFUND

您可以使用布尔逻辑实现该逻辑:

where p.invc_dt  BETWEEN 1150101 AND 1160131 and
      (o.Tracking_num is not null or order_cde = 'REFUND')
我不确定“除非”是否是排他性的,所以您可能是指:

where p.invc_dt  BETWEEN 1150101 AND 1160131 and
      ((o.Tracking_num is not null and order_cde <> 'REFUND')
       (o.Tracking_num is null and order_cde = 'REFUND')
      )
其中p.invc_dt介于1150101和1160131之间,且
((o.Tracking_num不为空,订单_cde‘退款’)
(o.Tracking_num为空,订单_cde='退款')
)

您可以使用布尔逻辑实现逻辑:

where p.invc_dt  BETWEEN 1150101 AND 1160131 and
      (o.Tracking_num is not null or order_cde = 'REFUND')
我不确定“除非”是否是排他性的,所以您可能是指:

where p.invc_dt  BETWEEN 1150101 AND 1160131 and
      ((o.Tracking_num is not null and order_cde <> 'REFUND')
       (o.Tracking_num is null and order_cde = 'REFUND')
      )
其中p.invc_dt介于1150101和1160131之间,且
((o.Tracking_num不为空,订单_cde‘退款’)
(o.Tracking_num为空,订单_cde='退款')
)

是否退款
?祝你好运,
是退款吗?祝你好运