|
Почему, если внутри CROSS APPLY есть агрегат, то он работает, как OUTER APPLY
|
|||
---|---|---|---|
#18+
Для примера, есть простая таблица с данными: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Тут CROSS APPLY работает верно: Код: sql 1. 2. 3.
Код: plaintext 1. 2.
Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2020, 03:41 |
|
Почему, если внутри CROSS APPLY есть агрегат, то он работает, как OUTER APPLY
|
|||
---|---|---|---|
#18+
Mikhail__174, Потому что агрегатные функции всегда возвращают в таком случае одну строку, в которой, если значений не найдено, будет NULL. Можете попробовать добавить в подзапрос GROUP BY num, тогда вроде должен перестать. Кстати, какой-то у вас странный подзапрос - где условие корреляции? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2020, 04:40 |
|
Почему, если внутри CROSS APPLY есть агрегат, то он работает, как OUTER APPLY
|
|||
---|---|---|---|
#18+
Ennor Tiegael Потому что агрегатные функции всегда возвращают в таком случае одну строку, в которой, если значений не найдено, будет NULL. COUNT вернёт 0. Возможно, причина в том, что Except for COUNT, aggregate functions ignore null values. https://docs.microsoft.com/en-us/sql/t-sql/functions/aggregate-functions-transact-sql?view=sql-server-ver15 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2020, 06:42 |
|
Почему, если внутри CROSS APPLY есть агрегат, то он работает, как OUTER APPLY
|
|||
---|---|---|---|
#18+
COUNT вернет 0, но может и NULL, смотря как написать. Сон Веры Павловны Except for COUNT, aggregate functions ignore null values. https://docs.microsoft.com/en-us/sql/t-sql/functions/aggregate-functions-transact-sql?view=sql-server-ver15 А вот это странное утверждение, учитывая, что вообще-то COUNT(ColumnName) тоже игнорирует NULL (правда, только в такой форме и в соотв. столбце). ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2020, 10:13 |
|
Почему, если внутри CROSS APPLY есть агрегат, то он работает, как OUTER APPLY
|
|||
---|---|---|---|
#18+
Ennor Tiegael Mikhail__174, Потому что агрегатные функции всегда возвращают в таком случае одну строку, в которой, если значений не найдено, будет NULL. Можете попробовать добавить в подзапрос GROUP BY num, тогда вроде должен перестать. Ennor Tiegael Кстати, какой-то у вас странный подзапрос - где условие корреляции? P.S. также нашёл ответ тут , он аналогичен Вашему ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2020, 13:35 |
|
|
start [/forum/topic.php?fid=46&msg=39942733&tid=1686274]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
81ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 321ms |
total: | 489ms |
0 / 0 |