Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle SQL-SCD跟踪随时间变化的属性_Sql_Oracle_Scd - Fatal编程技术网

Oracle SQL-SCD跟踪随时间变化的属性

Oracle SQL-SCD跟踪随时间变化的属性,sql,oracle,scd,Sql,Oracle,Scd,我遇到了以下错误: ORA-30483: window functions are not allowed here 30483. 00000 - "window functions are not allowed here" 我正试图建立一个横向视图,以了解随时间变化对BOOK_NO和WALK_NO属性的影响 我认为一个合理的方法是将有效的|排序到日期,然后将书| no | | | walk | no属性按该值解码……但不确定从这里走到哪里 SQL语句如下: Select METER_

我遇到了以下错误:

ORA-30483: window  functions are not allowed here
30483. 00000 -  "window  functions are not allowed here"
我正试图建立一个横向视图,以了解随时间变化对BOOK_NO和WALK_NO属性的影响

我认为一个合理的方法是将有效的|排序到日期,然后将书| no | | | walk | no属性按该值解码……但不确定从这里走到哪里

SQL语句如下:

Select METER_PIT_REF 
,MAX(DECODE( RANK() OVER (PARTITION BY METER_PIT_REF ORDER BY EFFECTIVE_TO DESC),1,BOOK_NO||WALK_NO) )
,MAX(DECODE( RANK() OVER (PARTITION BY METER_PIT_REF ORDER BY EFFECTIVE_TO DESC),2,BOOK_NO||WALK_NO) )
,MAX DECODE( RANK() OVER (PARTITION BY METER_PIT_REF ORDER BY EFFECTIVE_TO DESC),3,BOOK_NO||WALK_NO) )
FROM BW_PIT_BOOKWALK_BRIDGE
WHERE BOOK_NO = 'M04'
GROUP BY METER_PIT_REF
非常感谢您的建议

使用子查询:

Select METER_PIT_REF,
       MAX(CASE WHEN r = 1 THEN BOOK_NO||WALK_NO END),
       MAX(CASE WHEN r = 2 THEN BOOK_NO||WALK_NO END),
       MAX(CASE WHEN r = 3 THEN BOOK_NO||WALK_NO END)
FROM (SELECT b.*,
             RANK() OVER (PARTITION BY METER_PIT_REF ORDER BY EFFECTIVE_TO DESC) as r
      FROM BW_PIT_BOOKWALK_BRIDGE
     ) b
WHERE BOOK_NO = 'M04'
GROUP BY METER_PIT_REF;

我还将
DECODE()
替换为
CASE
。这是与ANSI标准相当的标准。

非常好。非常感谢您的快速回复!