Могу ли я выполнить фильтры на заказных столбцах? - PullRequest
1 голос
/ 12 марта 2020

Прежде чем я добавлю предложение where, timeAssigned заполняется как дополнительный столбец, но я не могу отфильтровать его. Возможно ли это?

select id, DATEDIFF(minute, transactionHeader.clerkDateTime, getDate()) as timeAssigned 
from transactionHeader 
where timeAssigned > 5

Ответы [ 2 ]

2 голосов
/ 12 марта 2020

Это правильно. Псевдоним, определенный в select, не понимается where. Я рекомендую переместить logi создания переменных c в предложение from, используя боковое соединение:

select th.id, v.timeAssigned
from transactionHeader th cross apply
     (values (DATEDIFF(minute, th.clerkDateTime, getDate()))
     ) v(timeAssigned)
where v.timeAssigned > 5
1 голос
/ 12 марта 2020

Самый простой вариант (не касаясь вашего запроса) - создать «табличное выражение», которое будет включать новый именованный столбец (построенный на лету), чтобы вы могли использовать его в основном запросе.

Например:

select * 
from ( -- your query as table expression "x" here
  select
    id, 
    DATEDIFF(minute, transactionHeader.clerkDateTime, getDate()) as timeAssigned 
  from transactionHeader 
  where timeAssigned > 5
) x
where timeAssigned > 5 -- your extra filtering condition here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...