下面是我在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?
答案 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。