我在连接表本身或实际上已经涉及该表的复杂查询时遇到问题。让我解释一下我的确切意思。
当前我有这个选择:
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
现在,长话短说,我希望选择还显示表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”表,我都会得到更多结果。因此,如果有人对如何创建JOIN有任何建议,那就是它不会添加任何行,但是只会将上面编写的4列添加到当前行的末尾,除了另外的tipOcene之外,非常感谢。
我希望我想要的说明至少是清楚的,如果没有,请随时提出,我会很乐于解释,因为我真的很努力...
感谢Keith,在WHERE上与案件保持联系,实际上做了这项工作,不知道我是怎么错过了以前的大声笑。