Sql 需要帮助为每个记录调用存储过程吗
我一直很难将嵌套的select语句转换为存储过程。我现在拥有的是,我可以获得每个记录所需的值,但我不知道如何使查询针对所有记录而不是一个记录运行。这是我的Sql 需要帮助为每个记录调用存储过程吗,sql,sql-server,dynamics-crm-2011,Sql,Sql Server,Dynamics Crm 2011,我一直很难将嵌套的select语句转换为存储过程。我现在拥有的是,我可以获得每个记录所需的值,但我不知道如何使查询针对所有记录而不是一个记录运行。这是我的 SELECT TICKETNUMBER, [TABLE].[END DATE] FROM ( SELECT TOP 1 BR.TicketNumber, RM.SMDC_EXECUTIONNO, RM.SMDC_DATEAPPROVED as [END DATE] FROM INCIDENT BR
SELECT
TICKETNUMBER, [TABLE].[END DATE]
FROM
(
SELECT TOP 1
BR.TicketNumber,
RM.SMDC_EXECUTIONNO,
RM.SMDC_DATEAPPROVED as [END DATE]
FROM
INCIDENT BR JOIN BUYERREQUEST RM ON BR.INCIDENTID = RM.BUYERREQUESTID
WHERE
RM.STATUSCODE = 5 OR RM.STATUSCODE = 6 OR RM.STATUSCODE = 100000000 AND BR.TICKETNUMBER = '2014-001155'
ORDER BY RM.executionno DESC
) AS [TABLE]
如您所见,我可以为一条记录(票号2014-001155,样本记录)获取所需的票号和结束日期,但我需要为所有8000条记录执行此操作。我希望那里的人能指导我。您提供的示例代码不是一个存储过程,如果您的目标是为everyrecord运行它,那么您可能应该研究函数 但您可以使用OUTER APPLY对SourceTable上的每个票证号运行该查询
select
Source.TicketNumber,
TICKETNUMBER,
[TABLE].[END DATE]
from mySourceTable Source
OUTER APPLY (
SELECT
TICKETNUMBER, [TABLE].[END DATE]
FROM
(
SELECT TOP 1
BR.TicketNumber,
RM.SMDC_EXECUTIONNO,
RM.SMDC_DATEAPPROVED as [END DATE]
FROM
INCIDENT BR JOIN BUYERREQUEST RM ON BR.INCIDENTID = RM.BUYERREQUESTID
WHERE
RM.STATUSCODE = 5 OR RM.STATUSCODE = 6 OR RM.STATUSCODE = 100000000 AND BR.TICKETNUMBER = Source.TicketNumber
ORDER BY RM.executionno DESC
) AS [TABLE]
) T
我无法确定存储过程将做什么,或者如何从查询中调用它。我也不明白,如果只需要每张票的最新日期,为什么需要嵌套查询。看起来您应该通过一个简单得多的查询获得每个票号所需的信息:
SELECT BR.TicketNumber, Max( RM.SMDC_DATEAPPROVED ) as [END DATE]
FROM INCIDENT BR
JOIN BUYERREQUEST RM
ON BR.INCIDENTID = RM.BUYERREQUESTID
WHERE RM.STATUSCODE in( 5, 6, 100000000 )
GROUP BY BR.TicketNumber
ORDER BY BR.TicketNumber;