我想看看是否有任何方法可以在不使用游标或任何循环逻辑的情况下做我想做的事情。我有这两张桌子。和之间存在一对多关系FileRunData
,Invoice
它们由 链接RunId/FileRunId
。
CREATE TABLE [dbo].[FileRunData](
[RunId] [uniqueidentifier] primary key,
[Status] [varchar](25) NOT NULL,
[IsEmailSent] [bit] NOT NULL
)
CREATE TABLE [dbo].[Invoice](
[FileRunId] [uniqueidentifier] NULL,
[InvoiceId] [uniqueidentifier] primary key,
[InvoiceType] [varchar](20) NOT NULL,
[Status] [varchar](25) NULL
)
我想针对以下情况发送电子邮件通知。
在FileRunData
ifStatus='Processed' and IsEmailSent=0
中,那么我必须检查Invoice
表中的所有行FileRunId
,如果它们Status is 'Invoiced'
是 ,那么我必须发送电子邮件。
我的方法(将在这里使用光标)
- 从 FileRunData 中选择 RunIds
- 对于每个 RunId,从 Invoice 中获取该 RunId 的行数
- 获取具有 Status='Invoiced' 的 RunId 的行数
- 如果 3&4 都相等,则发送电子邮件