1

派遣日に基づいてジョブから作業指示を引き出し、無視されたジョブを見つけようとしています。そのジョブの最新のディスパッチ日を持つ作業指示書のみが必要なので、最後にディスパッチされてからの期間を判別できます。ただし、作業指示がnullのジョブはディスパッチ中のため、プルしたくありません。ROW_NUMBERステートメントを試した後、一番上の行のみをプルしましたが、リストの最初にnullを表示し、次に最新の日付を表示する必要があるため、機能しませんでした。ジョブには、開いているか閉じているかのステータスもあり、開いているジョブは常にnullであるものです。これまでのスクリプトは次のとおりです。

SELECT DISTINCT

    [O].[Name] AS [Opportunity],
    [O].[Office_Location__c] AS [Office],
    MAX([WO].[saasdisp__Dispatch_Date__c]) AS [MaxDate]

FROM    [Opportunity] AS [O]
    JOIN [saasdisp__Work_Order__c] AS [WO] ON ([O].[Name] = [WO].[OppName__c]
                AND [O].[Id] = [WO].[Opportunity__c])

WHERE   [O].[StageName] = 'In Progress'


GROUP BY    [O].[Name],
            [O].[Office_Location__c]

これは私が得ているものです:

Opportunity         Office        MaxDate
Azad, Fariba          LA    2012-11-08 00:00:00.000
Cantrell, Timothy L.  LA    2012-11-07 00:00:00.000
Feiner, Jeffrey       LA    2012-11-06 00:00:00.000
Greasby, Kat          LA    2012-11-06 00:00:00.000

これが私が必要としていることですが、これらの機会には実際には、ディスパッチされるのを待っているnullの日付のオープンな作業指示があります。

4

1 に答える 1

1

where句にチェックを追加NOT EXISTSします。

..。

WHERE   [O].[StageName] = 'In Progress'

AND NOT EXISTS (
    SELECT *
    FROM [saasdisp__Work_Order__c] AS [WO2] 
    WHERE [WO2].[saasdisp__Dispatch_Date__c] IS NULL
          AND [O].[Name] = [WO2].[OppName__c]
          AND [O].[Id] = [WO2].[Opportunity__c]
)


GROUP BY    [O].[Name],
            [O].[Office_Location__c]
于 2012-11-08T22:30:12.017 に答える