我有一个在SQL Server中可用的查询,但在Excel中不起作用。我以为它与create table部分有关,但我真的不知道。
我需要做些简单的事情吗?
谢谢
SELECT DISTINCT
dev.[ExternalPointofDeliverynumber],
dev.InstallDate
INTO ##TEMPS2
FROM [DOCDPT].[result].[Tbl_Device] AS DEV
WHERE GETDATE() < TimeSliceTo
AND EquipmentType LIKE ('%S2%')
SELECT DISTINCT
temp.ExternalPointofDeliverynumber,
temp.installdate,
Wo.WorkOrderServiceProduct,
wo.WOMainUserStatus,
wo.WorkOrderReasonCategory
FROM
##TEMPS2 AS temp
LEFT JOIN
[DOCDPT].[result].[Tbl_Work_Summary] AS WO ON temp.ExternalPointofDeliverynumber = wo.ExternalPointOfDeliveryNumber
AND WorkOrderActualVisitDate > '2018-06-01'
AND ((wo.WorkOrderServiceProduct IN ('WARM', 'SMEXCHANGE', 'SMINSTALL') AND WOMainUserStatus = 'COMP')
OR (wo.WorkOrderServiceProduct IN ('WARM', 'SMEXCHANGE', 'SMINSTALL') AND WOMainUserStatus = 'PCOM' and WorkOrderReasonCategory ='COMP'))
DROP TABLE ##TEMPS2
答案 0 :(得分:0)
按照BishNaboB的建议,将##Temp
替换为CTE。我将此代码编码为“盲人”,因此您可能需要对其进行一些调整:
;With cte_temp
As
(
Select Distinct
DEV.ExternalPointofDeliverynumber
, DEV.InstallDate
From DOCDPT.result.Tbl_Device As DEV
Where
GetDate() < TimeSliceTo
And EquipmentType Like ('%S2%')
)
Select Distinct
temp.ExternalPointofDeliverynumber
, temp.installdate
, WO.WorkOrderServiceProduct
, WO.WOMainUserStatus
, WO.WorkOrderReasonCategory
From cte_temp As temp
Left Join DOCDPT.result.Tbl_Work_Summary As WO
On temp.ExternalPointofDeliverynumber = WO.ExternalPointOfDeliveryNumber
And WorkOrderActualVisitDate > '2018-06-01'
And (
(
WO.WorkOrderServiceProduct In (
'WARM', 'SMEXCHANGE', 'SMINSTALL'
)
And WOMainUserStatus = 'COMP'
)
Or (
WO.WorkOrderServiceProduct In (
'WARM', 'SMEXCHANGE', 'SMINSTALL'
)
And WOMainUserStatus = 'PCOM'
And WorkOrderReasonCategory = 'COMP'
)
)