OracleW

时间:2017-02-06 12:34:08

标签: oracle

下面是我在oracle数据库中的实际结果

TIMESTAMP          SUCESS  FAILURE  

26-01-2017            1      0    

31-01-2017            0      1            

如果我从26-01-2017选择31-01-2017。.Query必须如下所示返回

预期结果集

时间戳26-01-2017 27-01-2017 28-01-2017 29-01-2017 30-01-2017 31-01-2017

成功1 0 0 0 0 0 |

失败0 0 0 0 0 0

 Please can anyone give me suggestions to write logic for above expected resultset?

1 个答案:

答案 0 :(得分:0)

你需要一个PIVOT(我假设你总是成功或失败):

select * from (
select decode(success, 1, 'success', 'failure') as res_name, 
       success+failure as res, 
       to_char(time_stamp, 'DD-MM-YYYY') ts 
from your_table)
pivot (max(res) for ts in ('26-01-2017', '27-01-2017', '28-01-2017', '29-01-2017', '30-01-2017', '31-012017'))

列的列表总是在前面定义,因此如果需要列的变量列表,则需要生成上面的查询或使用PIVOT XML。使用PIVOT XML,您可以使用子查询而不是预定义的变量列表,但是您可以使用XML。