首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在甲骨文的条件下增加价值

在甲骨文的条件下增加价值
EN

Stack Overflow用户
提问于 2019-08-27 06:55:11
回答 1查看 105关注 0票数 0

如何在另一列上添加具有某些条件的增量值(而不是摘要)?

我使用类似Oracle的DBMS,名为Tibero,举个简单的例子,我想生成这些数据

代码语言:javascript
复制
ROWNUM GRP_STRT GRP_NO SLBY
1      1        1      1
2      1        1      1
3      1        1      1
4      1        1      1
5      1        1      1
6      1        2      0
7      1        2      0
8      1        3      1
9      1        3      1
10     1        3      1
11     1        4      0
12     1        5      1

列SLBY用于购买/出售代码(0=Buy,1=Sell),然后是每一种不断变化的事务类型,列GRP_NO增加(但不是按SLBY列分组)

代码语言:javascript
复制
SELECT CASE
    WHEN ROWNUM = 1 THEN GRP_NO
    WHEN ROWNUM <> 1 AND SLBY = LAG(SLBY,1) over (ORDER BY ROWNUM) THEN LAG(GRP_STRT,1) over (ORDER BY ROWNUM) - 1
    WHEN ROWNUM <> 1 AND SLBY_DSTN_CD <> LAG(SLBY_DSTN_CD,1) over (ORDER BY ROWNUM) THEN LAG(GRP_STRT,1) over (ORDER BY ROWNUM) + 1
        END TARGET_GROUPING
        , A.* 
FROM SOME_TABLE

我尝试了这个查询,但是我没有在上面的图片中得到我想要的,而是生成了一个GRP_NO,类似于1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1

为我的糟糕英语和糟糕的解释道歉,如果需要进一步的信息,我会解释更多,谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-27 09:03:06

据我所知你的问题,

您正在尝试从GRP_NO中计算ROWNUM, GRP_STRT, GRP_NO, and SLBY

我已经为您创建了以下查询。

您可以检查逻辑并相应地将其应用于代码中:

代码语言:javascript
复制
SELECT
    RN,
    GRP_STRT,
    SUM(CASE
        WHEN PREV_SLBY_DSTN_CD IS NULL
             OR PREV_SLBY_DSTN_CD <> SLBY_DSTN_CD THEN 1
    END) OVER(
    ORDER BY
        RN
    ) AS GRP_NO,
    SLBY_DSTN_CD   AS SLBY
FROM
    (
        SELECT
            RN,
            LAG(SLBY_DSTN_CD) OVER(
                ORDER BY
                    RN
            ) AS PREV_SLBY_DSTN_CD,
            SLBY_DSTN_CD,
            GRP_STRT
        FROM
            (SELECT ROWNUM RN, .... FROM SOME_TABLE) A
    )

此代码用于生成输出,如所示:

代码语言:javascript
复制
ROWNUM GRP_STRT GRP_NO SLBY
1      1        1      1
2      1        1      1
3      1        1      1
4      1        1      1
5      1        1      1
6      1        2      0
7      1        2      0
8      1        3      1
9      1        3      1
10     1        3      1
11     1        4      0
12     1        5      1

干杯!!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57669131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档