У меня есть такое мнение

col1 col2 col3 year class type
1    3    4    2017 A     1
4    5    7    2017 A     2
3    4    2    2017 A     3
3    1    1    2017 A     4
1    1    1    2017 B     1
0    0    2    2017 B     2
2    2    0    2017 B     3

Я хочу создать новое представление на основе приведенного выше, я хочу суммировать столбцы того же года, если «тип» не равен 1. Если type = 1, новое значение - «да», если type! = 1 » нет ".

col1 col2 col3 year class new
1    3    4    2017 A     yes
10   10   10   2017 A     no
1    1    1    2017 B     yes
2    2    2    2017 B     no

Как я могу это сделать?

sql
1
Sebastián 13 Мар 2018 в 20:37

2 ответа

Лучший ответ

Вы можете использовать это.

SELECT 
    SUM(col1) col1, 
    SUM(col2) col2,
    SUM(col3) col3,
    year,
    class,
    (case when type = 1 then 'yes' else 'no' end)  as new 
FROM MyTable
GROUP BY year, class, (case when type = 1 then 'yes' else 'no' end) 

Результат:

col1        col2        col3        year        class new
----------- ----------- ----------- ----------- ----- ----
10          10          10          2017        A     no
1           3           4           2017        A     yes
2           2           2           2017        B     no
1           1           1           2017        B     yes
0
Serkan Arslan 13 Мар 2018 в 18:39

В зависимости от вашей таблицы это будет примерно так

SELECT SUM(col1), SUM(col2), SUM(col3), year, class
FROM table WHERE type <> 1
GROUP BY year, class
0
Rob S. 13 Мар 2018 в 17:42