カーソルやループロジックを使用せずに、私がやろうとしていることを行う方法があるかどうかを確認したいと思います。私はこれらの2つのテーブルを持っています。と の間には 1 対多の関係が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
ifでは、テーブルStatus='Processed' and IsEmailSent=0
内のすべての行をチェックしてその行を確認する必要があり、その場合はメールを送信する必要があります。Invoice
FileRunId
Status is 'Invoiced'
私のアプローチ(ここではカーソルを使用します)
- FileRunData から RunIds を選択します
- RunId ごとに、Invoice からその RunId の行数を取得します。
- Status='Invoiced' を持つその RunId の行数を取得します
- 3 と 4 の両方が等しい場合、メールを送信します