我有一个SQL查询,如下所示:
SELECT
A.COL1, A.COL2
FROM
SOMESCHEMA.TABLE1 A
WHERE
A.COL3 NOT IN (SELECT A1.COL3 FROM SOMESCHEMA.TABLE2 B, SOMESCHEMA.TABLE1 A1 WHERE A.COL4 = B.COL4 AND B.DATE >= '2014-01-17')
上述查询的结果是两列COL1和COL2。
现在我想将第二个表的DATE列放入我的结果中。
也就是说,结果应该是COL1,COL2和DATE。
如何实现这一目标? 谢谢你的阅读!
答案 0 :(得分:1)
这正是您要使用联接的情况:
SELECT
A.COL1, A.COL2, B.DATE
FROM
SOMESCHEMA.TABLE1 A INNER JOIN SOMESCHEMA.TABLE2 B ON A.COL3 = B.COL3
WHERE B.DATE >= '2014-01-17'
您可以在此处找到有关在DB2中使用JOINS的更多信息:http://www-01.ibm.com/support/knowledgecenter/?lang=en#!/SSEPEK_10.0.0/com.ibm.db2z10.doc.intro/src/tpc/db2z_innerjoin.dita
答案 1 :(得分:0)
您提出的问题毫无意义 - 您要求数据不匹配的匹配数据。每个表的样本数据和样本输出在这里真的很有帮助。
这是我对你要做的事情的最好猜测:
从Table2返回数据,其中COL4上的匹配项大于1月17日且具有不同的COL3
SELECT
A.COL1, A.COL2, B.DATE
FROM
SOMESCHEMA.TABLE1 A
INNER JOIN
SOMESCHEMA.TABLE2 B ON
A.COL4 = B.COL4 AND
B.DATE >= '2014-01-17' AND
A.COL3 <> B.COL3