【发布时间】:2015-04-29 23:06:42
【问题描述】:
我有 3 张桌子:
TableA(IDRem, IDPed, IDOP)
TableB(IDOP, IDPed)
TableC(IDPed, InvoiceDate)
我需要一个select来JOIN TableA和TableC的记录,但是有两种可能的情况:
- 如果 TableA 上的 IDPed 不为 NULL,则通过 IDPed 直接加入 TableC
- TableA 上的ID IDPed 为NULL,然后通过IDOp 加入TableB,然后通过IDPed 将TableB 加入TableC
到目前为止,我尝试过这个:
SELECT
TableA.*
,(CASE WHEN TableC.InvoiceDate IS NULL
THEN TableC2.InvoiceDate
ELSE TableC.InvoiceDate
END) AS InvoiceDate
FROM
TableA
LEFT JOIN TableC on TableA.IDPed = TableC.IDPed
LEFT JOIN TableB on TableB.IDOp = TableA.IDOp
INNER JOIN TableC as TableC2 on TableC2.IDPed = TableB.IDPed
这样做的问题是我想在选择中包含的每个字段 o tableA 我需要做一个案例......何时确定来源是 tableA 还是 TableA2。
有没有更好的方法来做到这一点?谢谢!
【问题讨论】:
标签: sql-server