Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
01.04.2020, 03:41
|
|||
---|---|---|---|
|
|||
Почему, если внутри 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, 04:40
|
|||
---|---|---|---|
|
|||
Почему, если внутри CROSS APPLY есть агрегат, то он работает, как OUTER APPLY |
|||
#18+
Mikhail__174, Потому что агрегатные функции всегда возвращают в таком случае одну строку, в которой, если значений не найдено, будет NULL. Можете попробовать добавить в подзапрос GROUP BY num, тогда вроде должен перестать. Кстати, какой-то у вас странный подзапрос - где условие корреляции? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.04.2020, 06:42
|
|||
---|---|---|---|
|
|||
Почему, если внутри 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, 10:13
|
|||
---|---|---|---|
|
|||
Почему, если внутри 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, 13:35
|
|||
---|---|---|---|
|
|||
Почему, если внутри CROSS APPLY есть агрегат, то он работает, как OUTER APPLY |
|||
#18+
Ennor Tiegael Mikhail__174, Потому что агрегатные функции всегда возвращают в таком случае одну строку, в которой, если значений не найдено, будет NULL. Можете попробовать добавить в подзапрос GROUP BY num, тогда вроде должен перестать. Ennor Tiegael Кстати, какой-то у вас странный подзапрос - где условие корреляции? P.S. также нашёл ответ тут , он аналогичен Вашему ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=46&tablet=1&tid=1686274]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
others: | 323ms |
total: | 431ms |
0 / 0 |