SQL是否有比基于不同条件的CASE结果更有效的方法

罗伯·P

下面的case语句似乎不是我想要的结果的最佳或最有效的方法。

结果必须在1字段中的1行中,如下所示。如果有1个PO和1个IREQ,则结果应在LINE_COMMENT字段的行上显示“ 1 PO,1 IREQ”。如果只有2个PR,结果应该在LINE_COMMENT字段的行上显示“ 2 PR”。此过程将重复大约65K次,结果会有所不同。

今天的一条线明天可能会在根据数据更改重新查询时发生更改(例如,今天的结果可能是“ 1 PO,2 PR”,明天的行结果可能是“ 2 PO”。

此外,PO计数来自其自己的表,而PR和IREQ来自另一个表,两个表都连接到具有2个唯一键的另一个表。

作为一个新的自学成才的分析师,我只尝试过Case陈述。请告知是否有更有效的方法来处理此问题,尤其是因为完整查询将处理约30种不同的组合。

以下是根据特定条件查找数据所需的较大语句的样本。

CASE
    WHEN COUNT PO >= 1 THEN
        CASE
            WHEN COUNT PR >= 1 THEN
                CASE
                    WHEN COUNT IREQ >= 1 THEN
                        PO, PR, IREQ
                    ELSE
                        PO, PR
                END
            WHEN COUNT IREQ >= 1 THEN
                    PO, IREQ
            ELSE
                PO  
            END
    WHEN COUNT PR >= 1 THEN 
        CASE
            WHEN COUNT IREQ >= 1 THEN
                PR, IREQ
            ELSE
                PR
        END
    WHEN COUNT IREQ >= 1 THEN
        IREQ
END LINE_COMMENT


PO  PR  IREQ    RESULT for LINE_COMMENT
1   3   1       1 PO, 3 PR, 1 IREQ
2   1   0       2 PO, 1 PR
1   0   1       1 PO, 1IREQ
1   0   0       1 PO 
0   2   1       2 PR, 1 IREQ 
0   1   0       1 PR 
0   0   2       2 IREQ 
0   0   0       NO RESULTS
博卡

或者,也许您想要解码:

select decode(po, 0, '', TO_CHAR(po) || ' PO, ') 
       || decode(pr, 0, '', TO_CHAR(pR) || ' PR, ') 
       || decode(ireq, 0, '', TO_CHAR(ireq) || ' IREQ ') LINE_COMMENT
from test;

这是演示

结果:

LINE_COMMENT
1 PO, 3 PR, 1 IREQ 
2 PO, 1 PR, 
1 PO, 1 IREQ 
1 PO, 
2 PR, 1 IREQ 
1 PR, 
2 IREQ 

@Littlefoot发表评论后,我将其更改为:

select decode(LINE_COMMENT, '', 'NO RESULTS', rtrim(LINE_COMMENT,','))  LINE_COMMENT
from (
select decode(po, 0, '', TO_CHAR(po) || ' PO,') 
       || decode(pr, 0, '', TO_CHAR(pR) || ' PR,') 
       || decode(ireq, 0, '', TO_CHAR(ireq) || ' IREQ') LINE_COMMENT
from test);

演示

结果:

LINE_COMMENT
1 PO,3 PR,1 IREQ
2 PO,1 PR
1 PO,1 IREQ
1 PO
2 PR,1 IREQ
1 PR
2 IREQ
NO RESULTS

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

是否有更有效的方法为 RecyclerView 文本添加不同的颜色?

来自分类Dev

有没有比子查询更有效的方法来将组的结果与表连接起来?

来自分类Dev

此SQL查询是否有更有效的替代方法?

来自分类Dev

有没有比pip更有效的方法来满足项目依赖性?

来自分类Dev

有没有比python中的networkx更有效的方法来计算最短路径问题?

来自分类Dev

有没有比几个if语句更有效的方法来处理按钮单击事件?

来自分类Dev

有更有效的方法吗?

来自分类Dev

>&-是否比> / dev / null更有效?

来自分类Dev

寻找更有效的“ for循环” SQL

来自分类Dev

比函数引用更有效的方法?

来自分类Dev

列出组合的更有效方法

来自分类Dev

选择功能的更有效方法

来自分类Dev

更有效的迭代方法

来自分类Dev

制作JButton的更有效方法

来自分类Dev

Django注释-更有效的方法?

来自分类Dev

创建阵列的更有效方法

来自分类Dev

列出组合的更有效方法

来自分类Dev

复制代码的更有效方法

来自分类Dev

是否有比我进行标题排序(没有前导引号或文章)更有效的标题数组排序方式?

来自分类Dev

在熊猫中基于条件分配价值的有效方法?

来自分类Dev

双向地图是否有更有效的实现?

来自分类Dev

中断是否比检查Java中的循环条件更有效?

来自分类Dev

中断是否比检查Java中的循环条件更有效?

来自分类Dev

基于R?中某些值和索引矩阵的更有效的数据矩阵获取方法。

来自分类Dev

有没有更有效的方法来运行多个UPDATE SQL语句

来自分类Dev

有没有更有效的方法来执行此嵌套SQL查询?

来自分类Dev

有没有更有效的方法来运行多个UPDATE SQL语句

来自分类Dev

是否有一种班轮或更有效的方法来完成此任务?

来自分类Dev

在PySpark 1.6中是否有更有效的方法来实现余弦相似度?

Related 相关文章

  1. 1

    是否有更有效的方法为 RecyclerView 文本添加不同的颜色?

  2. 2

    有没有比子查询更有效的方法来将组的结果与表连接起来?

  3. 3

    此SQL查询是否有更有效的替代方法?

  4. 4

    有没有比pip更有效的方法来满足项目依赖性?

  5. 5

    有没有比python中的networkx更有效的方法来计算最短路径问题?

  6. 6

    有没有比几个if语句更有效的方法来处理按钮单击事件?

  7. 7

    有更有效的方法吗?

  8. 8

    >&-是否比> / dev / null更有效?

  9. 9

    寻找更有效的“ for循环” SQL

  10. 10

    比函数引用更有效的方法?

  11. 11

    列出组合的更有效方法

  12. 12

    选择功能的更有效方法

  13. 13

    更有效的迭代方法

  14. 14

    制作JButton的更有效方法

  15. 15

    Django注释-更有效的方法?

  16. 16

    创建阵列的更有效方法

  17. 17

    列出组合的更有效方法

  18. 18

    复制代码的更有效方法

  19. 19

    是否有比我进行标题排序(没有前导引号或文章)更有效的标题数组排序方式?

  20. 20

    在熊猫中基于条件分配价值的有效方法?

  21. 21

    双向地图是否有更有效的实现?

  22. 22

    中断是否比检查Java中的循环条件更有效?

  23. 23

    中断是否比检查Java中的循环条件更有效?

  24. 24

    基于R?中某些值和索引矩阵的更有效的数据矩阵获取方法。

  25. 25

    有没有更有效的方法来运行多个UPDATE SQL语句

  26. 26

    有没有更有效的方法来执行此嵌套SQL查询?

  27. 27

    有没有更有效的方法来运行多个UPDATE SQL语句

  28. 28

    是否有一种班轮或更有效的方法来完成此任务?

  29. 29

    在PySpark 1.6中是否有更有效的方法来实现余弦相似度?

热门标签

归档