1

我正在尝试根据他们的派遣日期从工作中提取工作订单以找到被忽视的工作。我只想要具有该作业最近调度日期的工作订单,以便我可以确定自上次调度以来的时间。但是,我不想拉出任何具有空工作订单的工作,因为这些工作正在被分派。我尝试了 ROW_NUMBER 语句,然后只拉出第一行,但我需要空值首先出现在列表中,然后是最新日期,这样就不起作用了。这些工作也有一个打开或关闭的状态,打开的那些总是为空的这是我到目前为止的脚本:

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

这是我所需要的,除了这些机会实际上有空日期的未结工作订单等待发送。

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 回答