2014-11-10 2 views
-1

у меня есть выход SQL как это:объединить две строки в две колонки с третьей колонки так же, как это

LINE  SIZE  TOT_COUNT 
A   20   113 
A   40    3 
B   20    4 
B   40    2 
C   20   142 
C   40   452 

Но я хочу, как это:

LINE  20    40 
A   113    3 
B   4    2 
C   142   452 

Примечание: Это уже выход , а не любой столбец любой таблицы.

+1

Не спрашивайте [тот же вопрос снова] (http://stackoverflow.com/questions/26838008/merge-two-row-into-two-column-with-third-column-same-as-it-is) –

+0

@MaheswaranRavisankar - вы проголосовали за то, чтобы закрыть этот другой вопрос - возможно, в ответ на плохое форматирование вместо фактического контента. Поскольку он закрыт, никто не может опубликовать ответ, пока люди не проголосуют за его повторным открытием. В этих условиях подход OP понятен. Голосование, чтобы закрыть этот вопрос как дубликат закрытого вопроса *, который не имеет ответов *, бессмыслен и карателен. – APC

+0

Согласен @APC. OP Должен сделать этот вопрос разумным. Этот вопрос - это просто копия и вставка. Итак, все те близкие голоса по этим вопросам теперь бессмысленны! –

ответ

2
select 
    line, 
    sum(case size when 20 then tot_count end) as "20", -- use min is the same. 
    sum(case size when 40 then tot_count end) as "40" 
from 
    your_table 
group by 
    line 

Если первый вывод из другого запроса, вы можете заменить your_table с запросом в качестве суб запроса.

+0

Это будет работать, если ваши значения являются статическими (20,40). Существует лучший подход, который был бы кросс-таблицей, которая является динамической, но у меня нет моего готового сценария здесь. – TheProvost

+1

@ TheProvost. Динамический подход не лучше, если требуется фиксированное количество столбцов. – APC

+1

@APC да вот почему я сказал «ЕСЛИ» ... это, конечно, очень правильный ответ на вопрос, который я уже поддержал ... я просто забирался туда, если кто-то сюда пришел, ища способ репликации это с динамическими столбцами, которые более распространены :) – TheProvost

Смежные вопросы