Максимальное количество операторов в CTE - PullRequest
0 голосов
/ 09 апреля 2019
WITH abidAccount AS
(
    SELECT 
        [ID], AzureBlobInsertDate = MAX(AzureBlobInsertDate)
    FROM 
        [dba].[CurAccounts] 
    GROUP BY 
        ID
),
recentAccount AS
(
    SELECT ca.*
    FROM [dba].[CurAccounts] ca
    JOIN abidAccount aa ON aa.[id] = ca.[ID]
                        AND aa.azureblobInsertDate = ca.azureBlobInsertDate
),
abidDevice AS
(
    SELECT deviceID, azureBlobInsertDate = MAX(azureBlobInsertDate)
    FROM [dba].[CurrentDevices]
    GROUP BY DeviceID
),
recentDevice AS
(
    SELECT cd.*
    FROM [RZRExploreLayer3].[CurrentDevices] cd
    JOIN abidDevice ad ON ad.DeviceID = cd.DeviceID
                       AND ad.azureBlobInsertDate = cd.azureblobinsertdate
)
SELECT  
    rd.deviceId,
    rd.[DeviceReturned],
    rd.accountNumber,
    rd.[DeviceFormat],
    rd.[DeviceLabel],
    MAX(ra.azureBlobInsertDate) AS AzureBlobInsertDate
FROM            
    recentAccount ra
JOIN   
    recentDevice rd ON ra.[id] = rd.accountNumber
WHERE  
    rd.deviceReturned NOT LIKE 'Null'
GROUP BY   
    rd.deviceId, rd.[DeviceReturned], rd.accountNumber,
    rd.[DeviceFormat], rd.[DeviceLabel]
    /* deviceID, rd.[DeviceReturned], rd.accountNumber, ra.azureBlobInsertDate */
HAVING 
    COUNT(1) > 1 

Как объединить несколько CTE в один запрос?

Мой запрос пытается определить, есть ли дублирующие записи, и если это так, только сохранить максимальную (AzureBlobInsertDate) запись и удалить другие дубликаты.затем объедините все результаты из таблиц CurAccounts & Devices.

Любая помощь, которую вы можете предложить, будет принята с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...