求一个sql

sl19841106 2011-04-12 03:09:08

SELECT E.USER_NO,CASE WHEN EXISTS (SELECT /*+parallel(b,10)*/ 1 FROM ODS.ODS_R_RENT_INFO_MON B WHERE b.user_id=e.user_no) THEN '1'ELSE '0'END is_heyue
FROM (SELECT /*+parallel(t,10)*/
T.USER_NO,
SUM(T.STAND_FEE_2 + T.LONG_FEE_2 + T.SPECIAL_FEE_2 + T.OTHER_FEE_2)
FROM ODS.ODS_O_OWE_GSM_MON T
WHERE (T.STAND_FEE_2 + T.LONG_FEE_2 + T.SPECIAL_FEE_2 +
T.OTHER_FEE_2) > 0
AND T.ACCT_MONTH = '201012'
AND 此处想选取min(T.OWE_MONTH)='201012'的数据
AND T.TELE_TYPE = '1'
GROUP BY T.USER_NO) T,
(SELECT /*+parallel(e,10)*/
E.USER_NO, E.TELE_TYPE
FROM EDW.DW_M_DEV_USER_MON E
WHERE E.ACCT_MONTH = '201012') E
WHERE T.USER_NO = E.USER_NO(+)
AND E.TELE_TYPE = '1200'

不知道大家能理解么,在线等
...全文
62 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hithink 2011-04-12
  • 打赏
  • 举报
回复
这段代码在几个无关紧要的地方需要改一下外没有什么问题吧!楼主的要求是什么?
sl19841106 2011-04-12
  • 打赏
  • 举报
回复

CREATE TABLE temp_owe_3g_20110406 AS
SELECT E.USER_NO,CASE WHEN EXISTS (SELECT /*+parallel(b,10)*/ 1 FROM ODS.ODS_R_RENT_INFO_MON B WHERE b.user_id=e.user_no) THEN '1'ELSE '0'END is_heyue
FROM (SELECT /*+parallel(t,10)*/
T.USER_NO,
SUM(T.STAND_FEE_2 + T.LONG_FEE_2 + T.SPECIAL_FEE_2 + T.OTHER_FEE_2)
FROM ODS.ODS_O_OWE_GSM_MON T
WHERE (T.STAND_FEE_2 + T.LONG_FEE_2 + T.SPECIAL_FEE_2 +
T.OTHER_FEE_2) > 0
AND T.ACCT_MONTH = '201012'
AND T.OWE_MONTH ='201012'
AND T.TELE_TYPE = '1'
GROUP BY T.USER_NO) T,
(SELECT /*+parallel(e,10)*/
E.USER_NO, E.TELE_TYPE
FROM EDW.DW_M_DEV_USER_MON E
WHERE E.ACCT_MONTH = '201012') E
WHERE T.USER_NO = E.USER_NO(+)
AND E.TELE_TYPE = '1200'



CREATE TABLE TEMP_OWE_3G_20110412 AS
SELECT /*+parallel(t,10)*/
T.USER_NO, T.IS_HEYUE
FROM TEMP_OWE_3G_20110406 T
WHERE NOT EXISTS (SELECT /*+parallel(t1,10)*/
1
FROM ODS.ODS_O_OWE_GSM_MON T1
WHERE T1.USER_NO = T.USER_NO
AND (T1.STAND_FEE_2 + T1.LONG_FEE_2 + T1.SPECIAL_FEE_2 +
T1.OTHER_FEE_2) > 0
AND T1.ACCT_MONTH = '201012'
AND T1.OWE_MONTH < '201012'
AND T1.TELE_TYPE = '1')




看看我这么写对么
  • 打赏
  • 举报
回复
那就再加个条件咯 OWE_MONTH=201012 试试
sl19841106 2011-04-12
  • 打赏
  • 举报
回复
最小的=201012这个限制呢
sl19841106 2011-04-12
  • 打赏
  • 举报
回复
这个不太对吧
  • 打赏
  • 举报
回复
此处想选取min(T.OWE_MONTH)='201012'的数据

not exists(select 1 from ODS.ODS_O_OWE_GSM_MON t2
where t.主键=t2.主键 and t.OWE_MONTH>t2.OWE_MONTH)

17,380

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧