1

我已经使用 select 语句创建了一个视图,但我需要添加一个新字段 USER_ID,它显示了随每条记录递增的序列 (USER_ID_SEQ)。可能吗?我知道您可以使用 UNION 创建带有两个选择语句的视图,但我不确定如何将序列添加到视图中。下面是我用于第一个 SELECT 语句的查询。

create or replace view FINAL_WEB_LOG
as
SELECT SESSION_DT, 
     C_IP, 
     CS_USER_AGENT,
     tab_to_string(CAST(COLLECT(web_link) AS t_varchar2_tab)) WEBLINKS
FROM web_views_tab    
GROUP BY C_IP, CS_USER_AGENT, SESSION_DT
4

1 回答 1

0

尝试使用嵌套查询select

  create or replace view FINAL_WEB_LOG
  as
  SELECT (SELECT USER_ID_SEQ.NEXTVAL from dual) as USER_ID,
     SESSION_DT, 
     C_IP, 
     CS_USER_AGENT,
     tab_to_string(CAST(COLLECT(web_link) AS t_varchar2_tab)) WEBLINKS
 FROM web_views_tab    
 GROUP BY C_IP, CS_USER_AGENT, SESSION_DT

这应该可行,但我相信USER_ID_SEQ.NEXTVAL每次刷新视图都会不断增加。

如果您只想关联一个 ID 字段,那么只需使用ROWNUMas:

  create or replace view FINAL_WEB_LOG
  as
  SELECT ROWNUM as USER_ID,
     SESSION_DT, 
     C_IP, 
     CS_USER_AGENT,
     tab_to_string(CAST(COLLECT(web_link) AS t_varchar2_tab)) WEBLINKS
 FROM web_views_tab    
 GROUP BY C_IP, CS_USER_AGENT, SESSION_DT
于 2012-12-13T05:10:38.257 回答