gpt4 book ai didi

SQL 选择 SP 中的最大日期

转载 作者:行者123 更新时间:2023-12-04 05:11:26 26 4
gpt4 key购买 nike

USE [MyDatabase]
GO
Object: StoredProcedure [dbo].[SP_MyProcedure]
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[SP_MyProcedure]
-- Add the parameters for the stored procedure here
@StartDate NVARCHAR(19),
@EndDate NVARCHAR(19)
AS
BEGIN

SET NOCOUNT ON;

Insert statements for procedure here
DECLARE @FirstQuery nvarchar(1500);
DECLARE @SecondQuery nvarchar(1500);
DECLARE @TSQL nvarchar(4000);



SET @FirstQuery =
'
SELECT * FROM OPENQUERY(LinkedServer,
''
SELECT * FROM Server.Table
WHERE Name IN
(SELECT Tagname COLLATE DATABASE_DEFAULT FROM LocalServer.MyServer.dbo."NameList"
WHERE LOCATION = ''''X'''' AND SOURCE = ''''Y'''') AND TIMESTAMP >= ''''' + @StartDate + ''''' AND TIMESTAMP < ''''' + @EndDate + ''''''')';

我的问题是:如何在代码中包含 max(date),以便将 @startDate 与数据库中列的最新可用日期而不是今天的日期进行比较。
您看到的代码工作正常,但是当我选择比数据库中最后一个现有日期晚的日期时,查询会运行一段时间,然后返回未找到列的错误。

提前感谢您的任何建议。

帮助。
代码的以下部分不起作用,但我不知道为什么。有没有人有任何建议?谢谢
     -- Insert statements for procedure here
DECLARE @FirstQuery nvarchar(1500);
DECLARE @SecondQuery nvarchar(1500);
DECLARE @TSQL nvarchar(4000);
DECLARE @MaxTimeStamp nvarchar(19);


SET@MaxTimeStamp =
'SELECT MAX(TimeStamp) From OPENQUERY(LinkedServer)'


IF @StartDate <= @MaxTimeStamp
BEGIN

SET @FirstQuery =
'
SELECT * FROM OPENQUERY(LinkedServer,
''
SELECT * FROM Server.Table
WHERE Name IN
(SELECT Tagname COLLATE DATABASE_DEFAULT FROM LocalServer.MyServer.dbo."NameList"
WHERE LOCATION = ''''X'''' AND SOURCE = ''''Y'''') AND TIMESTAMP >= ''''' + @StartDate + ''''' AND TIMESTAMP < ''''' + @EndDate + ''''''')';

END

最佳答案

好吧,你可以用子查询替换它:

(select max(timestamp) from NameList)

如果这是一个存储过程,您可能希望将其放入一个变量中,例如:
declare @MaxTimestamp datetime;
select @MaxTimestamp = max(TimeStamp) from NameList

-- in your query, something like
coalesce(@StartTime, maxTimeStamp)

如果性能是一个问题,请尝试在 NameList(Location, Source, Timestamp) 上添加索引.

关于SQL 选择 SP 中的最大日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14875854/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com