2014-11-28 9 views
2

У меня есть таблица, которая выглядит какОбъединение столбцов в одной строке

TRANSACTION_ID VALUE TRANSACTION_TYPE AGR_NBR PART_NBR  
1    3456  BOOKING   ABC1 1  
2    345678 BOOKING   ABC2 NULL  
3    45678  BOOKING   ABC1 2  
4    45678  BIING    ABC2 NULL  
5    45678  BILLING   ABC1 1  
6    4775678 BILLING   ABC2 NULL 

Я бегу простой выбор на этом столе, как показано ниже:

SELECT AGR_NBR,PART_NBR, 

CASE WHEN TRANSACTION_TYPE = 'BOOKING' 
    THEN SUM(VALUE) 
    END AS BOOKING_VAL, 

CASE WHEN TRANSACTION_TYPE = 'BILLING' 
    THEN SUM(VALUE) 
    END AS BILLINNG_VAL 

FROM AA_TEST_TABLE 
WHERE AGR_NBR = 'ABC1' 

GROUP BY AGR_NBR,PART_NBR,TRANSACTION_TYPE; 

выход, который приходит из выше запрос:

AGR_NBR PART_NBR BOOKING_VAL BILLINNG_VAL  
ABC1 1   NULL  45678  
ABC1 1   3456  NULL  
ABC1 2   45678  NULL 

Но что я хочу, это же AGR_NBR & ЧАСТЬ типа (АВС1 & 1) в этом случае должна быть только 1 строка, как показано ниже &. Я бы предпочел сделать это, если это возможно, по выбору, если с исходными данными есть множество формул & присоединяется & также это всего лишь фиктивные данные для 1 строки, но в действительности будет N количество строк.

AGR_NBR PART_NBR BOOKING_VAL BILLINNG_VAL  
ABC1 1   3456  45678 

ответ

1

Попробуйте это:

SELECT A.AGR_NBR, A.PART_NBR, 
     SUM(CASE WHEN A.TRANSACTION_TYPE = 'BOOKING' THEN A.VALUE ELSE 0 END) AS BOOKING_VAL, 
     SUM(CASE WHEN A.TRANSACTION_TYPE = 'BILLING' THEN A.VALUE ELSE 0 END) AS BILLINNG_VAL 
FROM AA_TEST_TABLE A 
WHERE A.AGR_NBR = 'ABC1' 
GROUP BY A.AGR_NBR, A.PART_NBR; 
+0

Понял использовал это, ВЫБРАТЬ AGR_NBR, PART_NBR, SUM (CASE WHEN TRANSACTION_TYPE = 'БРОНИРОВАНИЕ' \t ТОГДА VALUE \t END) AS BOOKING_VAL, SUM (CASE WHEN TRANSACTION_TYPE = 'BILLING' \t ТОГДА ЗНАЧЕНИЕ \t КОНЕЦ) КАК BILLINNG_VAL ОТ AA_TEST_TABLE ГДЕ AGR_NBR = '' abc1 GROUP BY AGR_NBR, PART_NBR; –

+0

спасибо Saharsh :) –

0

Попробуйте это:

 SELECT AGR_NBR, PART_NBR, SUM(BOOKING_VAL) AS BOOKING_VAL, SUM(BILLING_VAL) AS BILLING_VAL FROM 
     ( 
      SELECT AGR_NBR, PART_NBR, CASE WHEN TRANSACTION_TYPE = 'BOOKING' THEN SUM(VALUE) END AS BOOKING_VAL, CASE WHEN TRANSACTION_TYPE = 'BILLING' THEN SUM(VALUE) END AS BILLING_VAL FROM test WHERE AGR_NBR = 'ABC1' GROUP BY AGR_NBR, PART_NBR, TRANSACTION_TYPE 
     ) 
    AS t GROUP BY AGR_NBR, PART_NBR 
Смежные вопросы