спасибо за столь полное объяснение

ибудь знает, есть ли способ повторить метод, используемый вэтот вопрос использования псевдонима подзапроса для выполнения расчетов в другом поле в t-SQL?

Я попытался использовать тот же синтаксис для следующего запроса в MS SQL Express и получил ошибку ниже:

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

Сообщение 207, Уровень 16, Состояние 1, Строка 17 Неверное имя столбца 'TotalNumberofLogins'. Сообщение 207, уровень 16, состояние 1, строка 17 Неверное имя столбца «iOSLogins». Сообщение 207, уровень 16, состояние 1, строка 17 Неверное имя столбца «AndroidLogins».

Не то чтобы это имело значение, но я попытался поместить псевдонимы в кавычки и скобки безрезультатно.

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

Этот запрос, однако, многословен, и я хотел бы знать, есть ли какой-либо способ повторить поведение в указанном вопросе для будущего использования.

Спасибо за любую помощь, которую вы можете предоставить.

Ответы на вопрос(1)

Ваш ответ на вопрос