INSERT INTO #Temp2 (RowNumber, ValFromFunc, FuncWeight, percentage)
SELECT
RowNumber, PercentMatch, @constVal, PercentMatch * @constVal
FROM
dbo.MatchDate(@Date)
dbo.MatchDate(@date)是一个内联TVF,如下所示:
CREATE FUNCTION [dbo].[MatchDate] (@DateFromUser nvarchar(20))
RETURNS TABLE AS RETURN
SELECT
p.Rowid AS RowNumber ,
CAST(100 AS INT) AS PercentMatch
FROM
dbo.Patients p
WHERE
datename(day, p.DOB) = @DateFromUser
GO
我有这个查询,我在一个查询中选择和插入。现在我有一个扩展的要求,需要我检查ModifiedAt
dbo.MatchDate(@Date)
返回的行,并且仅当#Temp2
返回的行大于某个时间T时才插入ModifiedAt
。
如何在上述查询中执行此操作?
答案 0 :(得分:1)
只需在select语句中放置一个where子句(假设您的表值函数返回一个名为ModifiedAt的列)
INSERT INTO #Temp2 (RowNumber, ValFromFunc, FuncWeight, percentage)
SELECT
RowNumber, PercentMatch, @constVal, PercentMatch * @constVal
FROM
dbo.MatchDate(@Date) where ModifiedAt > @T
答案 1 :(得分:1)
您可以在您的功能中添加修改日期但仅在适当的情况下添加修改日期,如果您只是为了方便起见,请不要添加它。
如果您选择该路线,那么您的查询应该只是
INSERT INTO #Temp2 (RowNumber, ValFromFunc, FuncWeight, percentage)
SELECT
RowNumber, PercentMatch, @constVal, PercentMatch * @constVal
FROM
dbo.MatchDate(@Date)
WHERE
ModifiedAt > @YourComparisonDateTime
但是,您不一定需要添加ModifiedAt,因为您仍然可以对表值函数执行连接。
INSERT INTO #Temp2 (RowNumber, ValFromFunc, FuncWeight, percentage)
SELECT
f.RowNumber, f.PercentMatch, @constVal, f.PercentMatch * @constVal
FROM
dbo.MatchDate(@Date) f
inner join YourSourceTable t
on f.RowNumber = t.RowNumber --t.RowNumber being the identity or PK column that matches f.RowNumber
-- and any other required join conditions
WHERE
t.ModifiedAt > @YourComparisonDateTime
我在这里做了很多假设,所以你需要填写空白或提供更多信息。
希望能帮到你。
修改强>
INSERT INTO #Temp2 (RowNumber, ValFromFunc, FuncWeight, percentage)
SELECT
f.RowNumber, f.PercentMatch, @constVal, f.PercentMatch * @constVal
FROM
dbo.MatchDate(@Date) f
inner join Patients p
on f.RowNumber = p.RowID
inner join ResultsStored rs
on rs.RowID = f.RowNumber
WHERE
p.ModifiedAt > rs.ModifiedAt