【问题标题】:Oracle APEX Report Query - Show All row as defaultOracle APEX 报告查询 - 默认显示所有行
【发布时间】:2020-06-24 23:39:40
【问题描述】:

我正在创建一个报告表格,用户可以在其中选择一个过滤器,该过滤器将根据他们所做的选择过滤掉表格值。 (即,如果他们选择 company1,则只会显示带有 company1 的行)。

我在尝试允许用户再次查看表的所有值时遇到问题(摆脱过滤后的值)。 我目前的查询是这样的:

select 
       TRANSACTION_NUMBER,
       SUPPLIER,
       DATE_

  FROM Table1 b join Account a on b.SUPPLIER = a.companyname
    where 

        Supplier =
          (CASE
              WHEN USERTYPE(:APP_USER) = 1 THEN :P2_Supplier
              ELSE (select COMPANYNAME from Account where lower(USERNAME)=lower(:APP_USER))
          END)

    AND
     PURCHASE_DATE_AND_TIME >= TO_DATE(:P2_START)
      AND PURCHASE_DATE_AND_TIME < TO_DATE(:P2_END)+ 1



我希望它在 supplier = NULL 时显示所有值(也就是去掉查询的“where”部分。
感谢您的帮助!

【问题讨论】:

    标签: oracle oracle-sqldeveloper oracle-apex


    【解决方案1】:

    这行得通吗?由于原始查询不可执行,因此未进行测试...

    select 
      Supplier...,
    
      FROM Company b join Account a on b.SUPPLIER = a.companyname
        where 
          (:P2_Supplier is null or
            Supplier =
              CASE
                  WHEN USERTYPE(:APP_USER) = 1 THEN :P2_Supplier
                  ELSE (select COMPANYNAME from Account where lower(USERNAME)=lower(:APP_USER))
              END
          )
    

    【讨论】:

    • 嗯,它没用。我将更新上面的查询,以便您尝试一下。
    • 它是否可能因为 PURCHASE_DATE_AND_TIME 谓词而不起作用?
    • 哦,实际上,我又试了一次,它确实奏效了 :) 非常感谢!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-23
    • 1970-01-01
    • 2018-11-15
    相关资源
    最近更新 更多