我有以下查询:
SELECT MS.idReg, MS.dsMotivo, A.contrato FROM MS
INNER JOIN S
ON S.motivoSiniestro = MS.idReg
INNER JOIN C
ON C.n__contrat = S.n__contrat
INNER JOIN A
ON A.n__article = C.n__article
表MS只有12条记录,我需要的记录和其他记录更多的记录。 我的问题是我只想要来自MS及其contrato专栏的12条记录,但我得到的更多。尝试了INNER,OUTER,LEFT和RIGHT联接的多种组合。有什么帮助吗?
答案 0 :(得分:2)
您获得的记录太多,因为MS表中的每一行都有几个A.contrato值。 Sql server不知道要采用的所有A.contrato值中的哪一个,所以它返回所有这些值。首先,你需要决定你想要哪一个。
如果有,你可以简单地写下你的查询:
SELECT MS.idReg, MS.dsMotivo, MAX(A.contrato)
FROM MS
INNER JOIN S
ON S.motivoSiniestro = MS.idReg
INNER JOIN C
ON C.n__contrat = S.n__contrat
INNER JOIN A
ON A.n__article = C.n__article
GROUP BY MS.idReg, MS.dsMotivo
答案 1 :(得分:1)
试试这个 -
SELECT MS.idReg, MS.dsMotivo, A.contrato
FROM dbo.MS
OUTER APPLY (
SELECT TOP 1 A.contrato
FROM dbo.S
JOIN dbo.C ON C.n__contrat = S.n__contrat
JOIN dbo.A ON A.n__article = C.n__article
WHERE S.motivoSiniestro = MS.idReg
) s