Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Проссумировать горизонтально с where  [new]
anton6
Member

Откуда:
Сообщений: 80
Доброе утро!
Подскажите, пожалуйста, как просуммировать горизонтально


select m1 + m2+ m3 as result from dbo.Numbers 

where (вот тут не знаю как написать) sum (этих чисел в горизонтальной сумме)  > 43
30 янв 18, 05:04    [21149425]     Ответить | Цитировать Сообщить модератору
 Re: Проссумировать горизонтально с where  [new]
Добрый Э - Эх
Guest
не совсем понятно, что тебе надо. привел бы пример тестовых данных на пару-тройку строчек и результат на них...
но если хрустальный шар не обманывает, то тебе нужно что-то такое:
anton6
Доброе утро!
Подскажите, пожалуйста, как просуммировать горизонтально


select m1 + m2+ m3 as result from dbo.Numbers 
where (m1 + m2+ m3 )  > 43
30 янв 18, 05:13    [21149428]     Ответить | Цитировать Сообщить модератору
 Re: Проссумировать горизонтально с where  [new]
anton6
Member

Откуда:
Сообщений: 80
Спасибо)
30 янв 18, 05:40    [21149434]     Ответить | Цитировать Сообщить модератору
 Re: Проссумировать горизонтально с where  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
или для универсальности* использовать магию VALUES / UNPIVOT
WITH
n AS (
  SELECT
    [m1] = 1,
    [m2] = 2,
    [m3] = 3,
    [mn] = 1024
)
SELECT 
  SUM( ss.[m] ) 
FROM 
  n
  CROSS APPLY (
    VALUES ( [m1] ), ( [m2] ), ( [m3] ), ( [mn] )
  ) ss ( [m] )
HAVING
  SUM( ss.[m] ) >= 42
;
WITH
n AS (
  SELECT
    [m1] = 1,
    [m2] = 2,
    [m3] = 3,
    [mn] = 1024
)
SELECT 
  SUM( [m] )
FROM 
  n
  UNPIVOT (
    [m] FOR X
    IN ( [m1], [m2], [m3], [mn] )
  ) ss
HAVING
  SUM( [m] ) >= 42
;

* универсальный от слова булшыт ибо работать будет медленно
30 янв 18, 10:33    [21149785]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить