【发布时间】:2021-07-30 18:55:44
【问题描述】:
我正在编写这段代码,用于将忠诚度和获取列设置为 0 或 1。我收到一个错误:
无法绑定多部分标识符“DCOT.Loyalty”
我在这里做错了什么?在我看来,连接存在一些问题。有人可以为我纠正这个问题吗?
DECLARE @CustomerSKID int
SET @CustomerSKID = (SELECT COUNT(CustomerSKID)
FROM Dim.DimCustomerOwnedTractor)
WHILE (@CustomerSKID) > 1
BEGIN
IF OBJECT_ID('tempdb..#Mintable1') IS NOT NULL
BEGIN
DROP TABLE #Mintable1
END
IF OBJECT_ID('tempdb..#Mintable2') IS NOT NULL
BEGIN
DROP TABLE #Mintable2
END
SELECT
CustomerSKID, MIN(PurchaseDate) AS MinPDate
INTO
#Mintable1
FROM
Dim.DimCustomerOwnedTractor
WHERE
ManufacturerName = 'Mahindra'
GROUP BY
CustomerSKID
SELECT CustomerSKID
INTO #Mintable2
FROM #Mintable1
WHERE MinPDate IS NOT NULL
UPDATE Dim.DimCustomerOwnedTractor
SET DCOT.Loyalty = 1
FROM Dim.DimCustomerOwnedTractor DCOT
LEFT OUTER JOIN #Mintable2 AS M2 ON DCOT.CustomerSKID = M2.CustomerSKID
AND DCOT.ManufacturerName = 'Mahindra'
IF OBJECT_ID('tempdb..#Mintable3') IS NOT NULL
BEGIN
DROP TABLE #Mintable3
END
IF OBJECT_ID('tempdb..#Mintable4') IS NOT NULL
BEGIN
DROP TABLE #Mintable4
END
SELECT CustomerSKID, MAX(PurchaseDate) AS MaxPDate
INTO #Mintable3
FROM Dim.DimCustomerOwnedTractor
WHERE ManufacturerName = 'Mahindra'
GROUP BY CustomerSKID
SELECT CustomerSKID
INTO #Mintable4
FROM #Mintable3
WHERE MaxPDate IS NOT NULL
UPDATE Dim.DimCustomerOwnedTractor
SET DCOT.Acquisition = 1
FROM Dim.DimCustomerOwnedTractor DCOT
LEFT OUTER JOIN #Mintable2 AS M2 ON DCOT.CustomerSKID = M2.CustomerSKID
LEFT OUTER JOIN #Mintable4 AS M4 ON DCOT.CustomerSKID = M4.CustomerSKID
LEFT OUTER JOIN #Mintable3 AS M3 ON DCOT.CustomerSKID = M3.CustomerSKID
AND DCOT.ManufacturerName = 'Mahindra'
AND DCOT.PurchaseDate = M3.MaxPDate
UPDATE Dim.DimCustomerOwnedTractor
SET DCOT.Acquisition = 0
FROM Dim.DimCustomerOwnedTractor DCOT
LEFT OUTER JOIN #Mintable1 AS M1 ON DCOT.CustomerSKID = M1.CustomerSKID
LEFT OUTER JOIN #Mintable4 AS M4 ON DCOT.CustomerSKID = M4.CustomerSKID
AND DCOT.ManufacturerName != 'Mahindra'
AND DCOT.PurchaseDate = M1.MinPDate
END
【问题讨论】:
标签: sql sql-server azure-sql-database azure-sql-data-warehouse