【发布时间】:2015-03-17 06:43:09
【问题描述】:
dbo.MatchDate(@Date) :从dbo.Patients 表返回结果的内联 TVF。内联 TVF 返回以下列:RowId 和 Percentmatch。
到目前为止我有这个查询:
INSERT INTO #Temp2 (RowNumber,ValFromFunc,FuncWeight,percentage)
SELECT RowNumber, d.PercentMatch, @constVal, d.PercentMatch * @constVal
from dbo.MatchDate(@Date) d inner join dbo.Patients p
on d.RowNumber = p.RowId
inner join dbo.ResultsStored rs on rs.RowId = d.RowNumber
where p.ModifiedAt > rs.ModifiedAt
我需要检查dbo.Patients 表中dbo.MatchDate(@Date) 函数返回的行的ModifiedAt 值是否大于ResultsStored 表中RowId's 中的行的ModifiedAt 与RowId's 返回的行相同。由于dbo.MatchDate(@Date) 仅返回RowId 和PercentMatch,为了获得这些行中的ModifiedAt,我在RowId 列上加入了Patients 表。
然后为了比较起见,为了从ResultsStored 表中获取ModifiedAt,我仅在RowId 列上将dbo.ResultsStored 进一步加入。
问题:它会导致插入重复的行,即我不仅从dbo.MatchDate(@Date) 获取行,而且还从dbo.ResultsStored 表中获取行,这根本不是预期的。 dbo.ResultsStored 只是检查 ModifiedAt 的值是否与 row id's 相同。
由于dbo.ResultsStored 表,我如何修改上述查询以避免#Temp2 中的行重复?
【问题讨论】:
标签: sql-server tsql