Select 如何编写选择案例联接?

Select 如何编写选择案例联接?,select,if-statement,join,case,Select,If Statement,Join,Case,我正在尝试编写一些sql代码,这些代码结合了来自两个表和用例的信息,但并没有返回所有数据 SELECT TABLE1.PRODUCT, TABLE1.TYPE, TABLE1.AMOUNT, (CASE WHEN TABLE1.PRODUCT = 'RADIO' THEN 100 ELSE 200 END) AS PRODUCT_CODE, (CASE WHEN TABLE1.TYPE = 'NEW' THEN 'Y' ELSE TABLE2.AGE E

我正在尝试编写一些sql代码,这些代码结合了来自两个表和用例的信息,但并没有返回所有数据

SELECT TABLE1.PRODUCT, TABLE1.TYPE, TABLE1.AMOUNT,
(CASE
  WHEN TABLE1.PRODUCT = 'RADIO'
    THEN 100
  ELSE 200
  END) AS PRODUCT_CODE,
(CASE
  WHEN TABLE1.TYPE = 'NEW'
     THEN 'Y'
  ELSE TABLE2.AGE
  END) AS STATUS
FROM TABLE1 LEFT JOIN TABLE 2 ON TABLE1.TID = TABLE2.TID
WHERE TABLE1.DATE > '01-AUG-15'
AND TABLE2.DATE = '02-AUG-15'
我遇到的问题是,我需要表1中的所有记录以及表2中应用的记录,但是当查询返回的行数少于表1中的行数时。

您的问题就在这里

和表2.DATE='2015年8月2日'

如果由于左联接而
Table2.Date
为空,则此条件将失败,这就是为什么您得到的行数少于
Table1
。从左联接表向where子句添加条件实际上是将其转换为内部联接

试试

AND(TABLE2.DATE='02-AUG-15'或TABLE2.DATE为空)

(这假设
TABLE2.DATE
不可为空)或将条件放在join语句中


从表1左键连接表1.TID=TABLE2.TID和TABLE2.DATE='02-AUG-15'

谢谢Paul。第二种选择是将其放入join语句,效果非常好!