我在连接一个表本身时遇到了问题,或者实际上是在连接一个已经涉及这个表的复杂查询时遇到了问题。让我来解释一下我到底是什么意思。
目前,我有以下选择:
SELECT
t.maticna, t.clientNo, t.letoZr, t.letoZrChr, t.sort,
t.tipOcene, t.bonitetniModel, t.datumOtvoritve, t.DatumKLJ,
t.ocm1solor_LT, t.ocm1solo_LT, t.ocm1solor_ST, t.ocm1solo_ST
FROM
(SELECT
a.maticna, a.clientNo, a.letoZr, a.letoZrChr, a.sort,
a.tipOcene, a.bonitetniModel, a.datumOtvoritve,
im.PKModul1_LT as ocm1solor_LT, im.PDModul1_LT*100 as ocm1solo_LT,
im.PKModul1_ST as ocm1solor_ST, im.PDModul1_ST*100 as ocm1solo_ST,
im.DatumKLJ,
ROW_NUMBER() OVER (PARTITION BY a.letoZrChr ORDER BY datumOtvoritve DESC, im.DatumKLJ DESC) AS rn
FROM
#osnovna a
LEFT JOIN
airb.bm.IzhodModeli im ON a.clientNo = im.KomitentID
AND im.ReferencniDatum = a.datumOtvoritve
AND a.tipocene = im.tipocene) t
WHERE
t.rn = 1
ORDER BY
t.DatumKLJ DESC它所做的是,返回以下5行:
maticna clientNo letoZr letoZrChr sort tipOcene bonitetniModel datumOtvoritve DatumKLJ ocm1solor_LT ocm1solo_LT ocm1solor_ST ocm1solo_ST
5046432 975145 2019 ML2019 4 2 GD 2019-06-30 43900 4 0,868 3 0,565
5046432 975145 2018 ZR2018 3 0 GD 2018-12-31 43900 8 34,425 8 24,269
5046432 975145 2017 ZR2017 2 0 GD 2017-12-31 43612 5 2,622 4 1,173
5046432 975145 2016 ZR2016 1 0 GD 2016-12-31 43355 4 1,405 3 0,588
5046432 975145 2019 PL2019 5 3 GD 2019-12-31 NULL NULL NULL NULL NULL现在,长话短说,我希望select还显示表im的最后4列(ocm1solor_LT、ocm1solo_LT、ocm1solor_ST、ocm1solo_ST ),其中:
如果tipOcene当前为2,那么我想将上面写入的4列添加到该行中,其中tipOcene=6、DatumKLJ、DatumOtvoritve和clientNo是相同的。
如果tipOcene当前为0,那么我想向该行添加相同的4列,但为tipOcene=1。
如果tipOcene是3,那么我想向该行添加相同的4列,但使用tipOcene=7。
我遇到的问题是,无论我如何尝试加入"im“表,我最终都会得到更多的结果。因此,如果任何人有任何建议如何进行连接,它不会添加任何行,但它只会将上面写的4列添加到当前行的末尾,除了一个不同的tipOcene,将非常感谢。
我希望我想要的东西的说明至少是清楚的笑,如果没有,请随时询问,我很乐意解释,因为我真的很挣扎…
发布于 2020-03-13 17:36:56
谢谢Keith,这是一个左联用案例,我不确定我是如何错过了之前的大笑。
https://stackoverflow.com/questions/60665845
复制相似问题