Como usar um alias em um cálculo para outro campo
Alguém sabe se existe uma maneira de replicar o método usado noessa questão de usar o alias de uma subconsulta para realizar cálculos em outro campo no t-SQL?
Tentei usar a mesma sintaxe para a seguinte consulta no MS SQL Express e obtive o erro abaixo:
DECLARE @PracticeID INT
DECLARE @Date1 date
DECLARE @Date2 date
SET @PracticeID = 11015
SET @Date1 = '2017-06-01'
SET @Date2 = '2017-09-01'
SELECT prtc.PracticeName ,COUNT(CASE WHEN udi.DevicePlatform = 'iOS' THEN 1 ELSE NULL END) iOSLogins,
COUNT(CASE WHEN udi.DevicePlatform = 'Android' THEN 1 ELSE NULL END) AndroidLogins,
( SELECT COUNT(*)
FROM UserEvent UE
WHERE UE.EventTypeID = 1 AND
UE.PracticeID = au.PracticeID AND
(UE.EventDate BETWEEN @Date1 and @Date2)
) TotalNumberLogins,
(SELECT TotalNumberofLogins) - ((SELECT iOSLogins) + (SELECT AndroidLogins )) DesktopLogins
FROM UserDeviceInfo UDI JOIN
AppUser AU ON udi.UserID = au.UserID JOIN
Practice PRTC ON au.PracticeID = prtc.PracticeID
WHERE au.PracticeID = @PracticeID AND
(udi.Created BETWEEN @Date1 AND @Date2)
GROUP BY prtc.PracticeName, au.PracticeID
Mensagem 207, nível 16, estado 1, linha 17 Nome da coluna inválido 'TotalNumberofLogins'. Mensagem 207, nível 16, estado 1, linha 17 Nome da coluna inválido 'iOSLogins'. Mensagem 207, nível 16, estado 1, linha 17 Nome da coluna inválido 'AndroidLogins'.
Não que isso fizesse diferença, mas tentei colocar o apelido entre aspas e colchetes sem sucesso.
Consegui obter o resultado desejado de outro método, executando os cálculos usando os mesmos valores que as variáveis em vez de alias e inserindo-os em uma tabela.
No entanto, essa consulta é detalhada e eu gostaria de saber se existe alguma maneira de replicar o comportamento na pergunta referenciada para uso futuro.
Obrigado por qualquer ajuda que você possa fornecer.