我想制作一个if语句,以便不过滤掉那些NULL
idBillingTransaction
所以,如果idBillingTransaction不为null然后是daterange,那么idBillingTransactions
中的日期范围应该没有过滤器(因为它有空值)
这是代码
select *
from subscription cs
LEFT JOIN
billing_transaction bt
ON CONVERT(cs.msisdn USING latin1) = bt.msisdn
where
bt.idBillingTransaction
BETWEEN (SELECT idBillingTransaction
FROM transaction_ids
WHERE dt = '2017-03-31')
AND (SELECT idBillingTransaction
FROM transaction_ids
WHERE dt = '2017-04-30')
答案 0 :(得分:0)
我认为您可以通过将WHERE
子句修改为不删除NULL
ID结算交易来获得您想要的内容:
SELECT *
FROM subscription cs
LEFT JOIN billing_transaction bt
ON CONVERT(cs.msisdn USING latin1) = bt.msisdn
LEFT JOIN transaction_ids t
ON bt.idBillingTransaction = t.idBillingTransaction AND
t.dt BETWEEN '2017-03-31' AND '2017-04-30'
我还删除了WHERE
条款中的两个子查询,因为我不认为它们是必要的。相反,在id账单交易中再次加入transaction_ids
表格会更加清晰,然后比较一系列日期。