Как отобразить одну строку из двух строк - PullRequest
0 голосов
/ 18 января 2012

В моей таблице есть столбец type, значение столбца type равно HOT и NOT.из этого я хочу отобразить HOT и NOT значения столбца в одну строку.

Пример

Table1

Period ID Total

11/2011 101 250
12/2011 102 350
11/2011 103 450
....

Table2

Period ID Type Value

11/2011 101 NOT 500
11/2011 101 HOT 200
12/2011 102 NOT 300
12/2011 102 HOT 200
....

Я хочу отобразить тип (Hot и Not) в одну строку

Ожидаемый вывод

Period ID NOT HOT Total

11/2011 101 500 200 250
12/2011 102 300 200 350
11/2011 103 300 400 450
....

Как сделать запрос.

Ответы [ 3 ]

3 голосов
/ 18 января 2012

Если я могу предположить, что table1 имеет первичный ключ (Period, ID), а table2 имеет первичный ключ (Period, ID, Type), то вы можете сделать:

select
    t1.period
    , t1.id
    , t2n.value [not]
    , t2h.value [hot]
    , t1.total
from
    table1 t1
    left join table2 t2n
        on t1.period = t2n.period
        and t1.id = t2n.id
        and t2n.type = 'Not'
    left join table2 t2h
        on t1.period = t2h.period
        and t1.id = t2h.id
        and t2h.type = 'Hot'

При этом будут извлечены все строки из таблицы 1 с соответствующими «не» и «горячими» аналогами, соответствующими t2n и t2h выше.

2 голосов
/ 18 января 2012

Вы пробовали это?

select base.period, base.id, sum( notchild.value ) as notsum, sum( hotchild.value ) as hotsum, base.total
from table1 base
left outer join table2 notchild 
    on base.period = notchild.period and base.id = notchild.id and notchild.type = 'NOT'
left outer join table2 hotchild 
    on base.period = hotchild.period and base.id = hotchild.id and hotchild.type = 'HOT'
group by base.period, base.id, base.total
0 голосов
/ 18 января 2012

Вы можете использовать JOIN (отметьте this ), чтобы сделать это.Соедините ваши два стола и выполните на нем SELECT.

...