栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

与“相关”子查询的有效联接

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

与“相关”子查询的有效联接

试试这个:

SELECt  rt.rangeId, aDate, CASE WHEN doUse = 1 THEN qty ELSE 0 END AS qtyFROM    (    SELECt  *    FROM    (        SELECt  r.*, t.*, SUM(doUse) OVER (PARTITION BY rangeId ORDER BY aDate) AS span        FROM    ( SELECt  r.rangeId, startDate, MAX(day) AS dm FROM    Range r, Days d WHERe   d.rangeid = r.rangeid GROUP BY     r.rangeId, startDate ) r, Dates t        WHERe   t.adate >= startDate        ORDER BY rangeId, t.adate        )    WHERe        span <= dm    ) rt, Days dWHERe   d.rangeId = rt.rangeID    AND d.day = GREATEST(rt.span, 1)

Dates
附言:在我看来,将所有这些保留在数据库中的唯一目的是获得一个带有假日标记的连续日历。

您可以使用以下构造在Oracle中生成任意长度的日历:

SELECt :startDate + ROWNUMFROM   dualConNECT BY       1 = 1WHERe  rownum < :length

并只在放假

Dates
。一个简单的联接将向您显示哪些
Dates
假期和哪些假期。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/420035.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号