2015-04-22 111 views
0

查询:一列中合并两行数据

SELECT * 
    FROM MYTABLE 
    WHERE 
    (custom_date BETWEEN '16-MAR-15' 
    AND '15-APR-15')) 
pivot(SUM(user_value) FOR custom_date IN(to_date('16/03/2015', 'DD/MM/YYYY') AS 
day16, to_date('17/03/2015', 'DD/MM/YYYY') AS 
day17, to_date('18/03/2015', 'DD/MM/YYYY') AS 
day18, to_date('19/03/2015', 'DD/MM/YYYY') AS 
day19, to_date('20/03/2015', 'DD/MM/YYYY') AS 
day20, to_date('21/03/2015', 'DD/MM/YYYY') AS 
day21, to_date('22/03/2015', 'DD/MM/YYYY') AS 
day22, to_date('23/03/2015', 'DD/MM/YYYY') AS 
day23, to_date('24/03/2015', 'DD/MM/YYYY') AS 
day24, to_date('25/03/2015', 'DD/MM/YYYY') AS 
day25, to_date('26/03/2015', 'DD/MM/YYYY') AS 
day26, to_date('27/03/2015', 'DD/MM/YYYY') AS 
day27, to_date('28/03/2015', 'DD/MM/YYYY') AS 
day28, to_date('29/03/2015', 'DD/MM/YYYY') AS 
day29, to_date('30/03/2015', 'DD/MM/YYYY') AS 
day30, to_date('31/03/2015', 'DD/MM/YYYY') AS 
day31, to_date('01/04/2015', 'DD/MM/YYYY') AS 
day01, to_date('02/04/2015', 'DD/MM/YYYY') AS 
day02, to_date('03/04/2015', 'DD/MM/YYYY') AS 
day03, to_date('04/04/2015', 'DD/MM/YYYY') AS 
day04, to_date('05/04/2015', 'DD/MM/YYYY') AS 
day05, to_date('06/04/2015', 'DD/MM/YYYY') AS 
day06, to_date('07/04/2015', 'DD/MM/YYYY') AS 
day07, to_date('08/04/2015', 'DD/MM/YYYY') AS 
day08, to_date('09/04/2015', 'DD/MM/YYYY') AS 
day09, to_date('10/04/2015', 'DD/MM/YYYY') AS 
day10, to_date('11/04/2015', 'DD/MM/YYYY') AS 
day11, to_date('12/04/2015', 'DD/MM/YYYY') AS 
day12, to_date('13/04/2015', 'DD/MM/YYYY') AS 
day13, to_date('14/04/2015', 'DD/MM/YYYY') AS 
day14, to_date('15/04/2015', 'DD/MM/YYYY') AS 
day15)) 
ORDER BY username; 

查询数据输出两个月Mar-Apr 2015如图图像。第一行是月份Mar-15,第二行是Apr-15

Image

作为图像中所看到的,具有DAY 29, DAY 30, DAY 31填充为Mar-15nullApr-158

对于Apr-15,DAY 01, DAY 02, DAY 03具有值8而对于“3月15号”的null

如何以两个Mar-Apr 2015数据相结合来展示像下面

Updated

+1

你真的可以在MySQL中做一个数据透视吗? – Arion

+0

该查询实际上是在oracle db usign PIVOT上执行的。 – Slimshadddyyy

+2

'custom_date BETWEEN '16 -MAR-15' AND '15 -APR-15''不直接相关,但为什么你使用** string **? ''16 -MAR-15'是一个字符串,而不是** a **日期**。 –

回答

0

请尝试此查询:

`SELECT sum(day16) as day16 , 
sum(day17) as day17 , 
sum(day18) as day18 , 
sum(day19) as day19 , 
sum(day20) as day20 , 
sum(day21) as day21 , 
sum(day22) as day22 , 
sum(day23) as day23 , 
sum(day24) as day24 , 
sum(day25) as day25 , 
sum(day26) as day26 , 
sum(day27) as day27 , 
sum(day28) as day28 , 
sum(day29) as day29 , 
sum(day30) as day30 , 
sum(day31) as day31 , 
sum(day01) as day01 , 
sum(day02) as day02 , 
sum(day03) as day03 , 
sum(day04) as day04 , 
sum(day05) as day05 , 
sum(day06) as day06 , 
sum(day07) as day07 , 
sum(day08) as day08 , 
sum(day09) as day09 , 
sum(day10) as day10 , 
sum(day11) as day11 , 
sum(day12) as day12 , 
sum(day13) as day13 , 
sum(day14) as day14 , 
sum(day15) as day15 , 
username 
    FROM MYTABLE 
    WHERE 
    (custom_date BETWEEN '16-MAR-15' 
    AND '15-APR-15')) 
pivot(SUM(user_value) FOR custom_date IN(to_date('16/03/2015', 'DD/MM/YYYY') AS 
day16, to_date('17/03/2015', 'DD/MM/YYYY') AS 
day17, to_date('18/03/2015', 'DD/MM/YYYY') AS 
day18, to_date('19/03/2015', 'DD/MM/YYYY') AS 
day19, to_date('20/03/2015', 'DD/MM/YYYY') AS 
day20, to_date('21/03/2015', 'DD/MM/YYYY') AS 
day21, to_date('22/03/2015', 'DD/MM/YYYY') AS 
day22, to_date('23/03/2015', 'DD/MM/YYYY') AS 
day23, to_date('24/03/2015', 'DD/MM/YYYY') AS 
day24, to_date('25/03/2015', 'DD/MM/YYYY') AS 
day25, to_date('26/03/2015', 'DD/MM/YYYY') AS 
day26, to_date('27/03/2015', 'DD/MM/YYYY') AS 
day27, to_date('28/03/2015', 'DD/MM/YYYY') AS 
day28, to_date('29/03/2015', 'DD/MM/YYYY') AS 
day29, to_date('30/03/2015', 'DD/MM/YYYY') AS 
day30, to_date('31/03/2015', 'DD/MM/YYYY') AS 
day31, to_date('01/04/2015', 'DD/MM/YYYY') AS 
day01, to_date('02/04/2015', 'DD/MM/YYYY') AS 
day02, to_date('03/04/2015', 'DD/MM/YYYY') AS 
day03, to_date('04/04/2015', 'DD/MM/YYYY') AS 
day04, to_date('05/04/2015', 'DD/MM/YYYY') AS 
day05, to_date('06/04/2015', 'DD/MM/YYYY') AS 
day06, to_date('07/04/2015', 'DD/MM/YYYY') AS 
day07, to_date('08/04/2015', 'DD/MM/YYYY') AS 
day08, to_date('09/04/2015', 'DD/MM/YYYY') AS 
day09, to_date('10/04/2015', 'DD/MM/YYYY') AS 
day10, to_date('11/04/2015', 'DD/MM/YYYY') AS 
day11, to_date('12/04/2015', 'DD/MM/YYYY') AS 
day12, to_date('13/04/2015', 'DD/MM/YYYY') AS 
day13, to_date('14/04/2015', 'DD/MM/YYYY') AS 
day14, to_date('15/04/2015', 'DD/MM/YYYY') AS 
day15)) 
GROUP BY username 
ORDER BY username;` 

这将总结所有你行成一个。