当谈到sql时,我是初学者,这个有点过头了,希望有人能指出我正确的方向..
我编写了一个正确返回右表中一行的查询但是我需要在最后的where子句中添加另一个测试,该子句重新检查表并检查字段contitems.tofollow
中的所有条目并查找值大于零,与返回的原始contracts.ContNo
行匹配..
SELECT Contracts.*, Contitems.*
FROM dbo.Contracts
INNER JOIN dbo.ContItems
ON dbo.ContItems.RECID =
(SELECT TOP(1) RECID
FROM dbo.ContItems
WHERE (ContItems.CONTNO = dbo.Contracts.CONTNO))
WHERE dbo.Contracts.SOURCE = 2
and (contracts.custom = 1 or contitems.tofollow > 0)
and contracts.status not in (4,9)
我需要将contitems.tofollow > 0
替换为每个contitems.tofollow
重新检查整个ContNO
结果的测试,但不知道如何实现它。任何人都可以帮助..?
答案 0 :(得分:0)
我想到了通过选择具有最大TOFOLLOW数量的单行来实现此目的的另一种方法 - 无需进一步测试..
SELECT Contracts.*, Contitems.*
FROM dbo.Contracts
INNER JOIN dbo.ContItems
ON dbo.ContItems.RECID =
(SELECT TOP(1) RECID
FROM dbo.ContItems
WHERE (ContItems.CONTNO = dbo.Contracts.CONTNO)
ORDER BY TOFOLLOW Desc)
WHERE dbo.Contracts.SOURCE = 2
and (contracts.custom = 1 or contitems.tofollow > 0)