Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
сумма с null
|
|||
|---|---|---|---|
|
#18+
У меня ситуация: есть числовой столбец, где встречаются значения NULL. Я делую в таблице группировочку а этот столбец для каждой группы суммирую. Нужно чтобы если в сумме встречается NULL вся сумма была NULL. Можно конечно case-ом решить, в одном месте я так и сделал, но в другом там запрос получился из нескольких таблиц и еще куча наворотов, так что там не очень катит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2001, 10:46 |
|
||
|
сумма с null
|
|||
|---|---|---|---|
|
#18+
Скиньте результат select без суммирования во временную таблицу, а потом с ним разбирайтесь, например delete from #tmp where group_field in (select group_field from #tmp where sum_field is null) and sum_field is not null select sum(sum_field), group_field from #tmp group by group_field ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2001, 12:32 |
|
||
|
сумма с null
|
|||
|---|---|---|---|
|
#18+
Можно по-всякому извратится Например, как-то так: select ..., (case when (count(*)-count(<FieldForSum>)>0 then NULL else sum(<FieldForSum> end) as Summa .... group by ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2001, 12:45 |
|
||
|
сумма с null
|
|||
|---|---|---|---|
|
#18+
Вместо рожи надо закрывающую скобку. Чегой-то она? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2001, 12:48 |
|
||
|
сумма с null
|
|||
|---|---|---|---|
|
#18+
(нормально, не рожа) В принципе я так и сделал. Только так: SELECT ...., case (select count(*) from CDR aaa where PriceKPN is null and aaa.A=sss.A) when 0 then dbo.FmtMoney(SUM(PriceKPN)) else null end AS PriceKPN, ... только подобные строчки очень забавно смотрятся в трехтабличном запросе с двойной группировкой. Получается ему надо еще не раз (и не сто) проходится по таблице Временную таблицу делать тоже никакого удовольствия -- порядка миллиона строк + таблицы множаться + это вид. Знаю, что при суммировании типа SET @A = @A + @B + @C можно выставлять флаг чтобы если один из операндов is null, то @A тоже становиться нулем. Думаю как это сделать для SUM() по столбцу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2001, 12:59 |
|
||
|
сумма с null
|
|||
|---|---|---|---|
|
#18+
В моем варианте нет подзапросов, поэтому проход по таблице будет только один. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2001, 14:29 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3527&tid=1824825]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 374ms |

| 0 / 0 |
