SQL转换小时到半小时观察

时间:2014-03-31 12:10:56

标签: sql oracle

我搜索过论坛,回合找不到能帮助我的答案。 因此,这个主题的原因。

我有一个包含每小时价格观察的数据库。 我也有这个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

有什么建议吗?

1 个答案:

答案 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功能。