我搜索过论坛,回合找不到能帮助我的答案。 因此,这个主题的原因。
我有一个包含每小时价格观察的数据库。 我也有这个SQL查询语句,它进入并选择/返回特定日期范围内的每小时价格观察。
但是,我需要查询以半小时而不是每小时的价格返回价格观察 - >我想这意味着,每次观察基本上需要重复两次,因此将其从每小时转换为半小时。
我的代码是这样的:
SELECT A.DELIVERY_START,
A.PRICE
FROM DMA_PREP.DMA_PRICE_V a
WHERE 1 =1
AND A.PRODUCT_BID ='1000286'
AND a.DELIVERY_START >= TRUNC(TRUNC(TRUNC(sysdate,'YYYY'),'YY'),'YY')
AND a.DELIVERY_PERIOD_TYPE_NAME = 'Hour'
ORDER BY A.delivery_start
我试图将'小时'更改为'半小时',但没有运气,因为它开始从数据库中返回一些完全其他值,这些值有半小时标记。
所以基本上,我需要查询来提取数据,但是在打印之前将其转换为半小时的观察结果。
这就是输出现在的样子:
01-JAN-14 35
01-JAN-14 34.97
01-JAN-14 34.03
01-JAN-14 30
01-JAN-14 28.04
01-JAN-14 29.79
01-JAN-14 29.79
01-JAN-14 29.79
01-JAN-14 29.9
01-JAN-14 30.63
01-JAN-14 33.58
01-JAN-14 34.97
01-JAN-14 44.92
01-JAN-14 35.99
01-JAN-14 35.46
01-JAN-14 37.94
01-JAN-14 59.94
01-JAN-14 71.99
01-JAN-14 57.91
01-JAN-14 47.95
01-JAN-14 44.95
01-JAN-14 40.04
01-JAN-14 34.56
01-JAN-14 34.01
02-JAN-14 36.71
有什么建议吗?
答案 0 :(得分:1)
您可以使用union all
:
with t as (<your query here>)
select t.DELIVERY_START, t.PRICE
union all
select t.DELIVERY_START + 1.0/(24*2), t.PRICE;
这使用Oracle语法添加半小时,因为您的查询似乎使用了Oracle功能。