动态 Oracle Pivot_In_Clause

2024-02-16

我有点卡住了。我想做一个用户角色关系数据透视表,到目前为止我的查询如下所示:

WITH PIVOT_DATA AS (
     SELECT *
     FROM
     (
         SELECT USERNAME, GRANTED_ROLE
         FROM DBA_USERS@DB_LINK U LEFT OUTER JOIN DBA_ROLE_PRIVS@DB_LINK R
         ON U.USERNAME = R.GRANTEE
      )
)
SELECT *
FROM PIVOT_DATA
PIVOT
(
    COUNT(GRANTED_ROLE)
    FOR GRANTED_ROLE
    IN('CONNECT') -- Just an example
)
ORDER BY USERNAME ASC;

它工作得很好并且完成了工作,但我不想写任何我想在其中搜索的角色pivot_in_clause,因为我们有很多这样的东西,我不想每次都检查是否有任何变化。

那么有没有办法写一个SELECT in the pivot_in_clause?我自己尝试了一下:

[...]
PIVOT
(
    COUNT(GRANTED_ROLE)
    FOR GRANTED_ROLE
    IN( SELECT ROLE FROM DBA_ROLES@DB_LINK )
)
[...]

但它总是给我一个 ORA-00936: 在整个查询的第 1 行中“缺少表达式”,我不知道为什么。难道不能有一个SELECT in the pivot_in_clause或者我做错了?


您可以在脚本中构建动态查询, 看这个例子:

variable rr refcursor

declare 
  bb varchar2(4000);
  cc varchar2( 30000 );
begin 
    WITH PIVOT_DATA AS (
         SELECT *
         FROM
         (
             SELECT USERNAME, GRANTED_ROLE
             FROM DBA_USERS U LEFT OUTER JOIN DBA_ROLE_PRIVS R
             ON U.USERNAME = R.GRANTEE
          )
    )
    select ''''|| listagg( granted_role, ''',''' ) 
            within group( order by granted_role ) || '''' as x 
    into bb
    from (
      select distinct granted_role from pivot_data
    )
    ;

    cc := q'[
    WITH PIVOT_DATA AS (
         SELECT *
         FROM
         (
             SELECT USERNAME, GRANTED_ROLE
             FROM DBA_USERS U LEFT OUTER JOIN DBA_ROLE_PRIVS R
             ON U.USERNAME = R.GRANTEE
          )
    )
    SELECT *
    FROM PIVOT_DATA
    PIVOT
    (
        COUNT(GRANTED_ROLE)
        FOR GRANTED_ROLE
        IN(]'  || bb || q'[) -- Just an example
    )
    ORDER BY USERNAME ASC]';

    open :rr for cc;
end;
/

SET PAGESIZE 200
SET LINESIZE 16000
print :rr

这是结果(只有小片段,因为它很宽很长)

-----------------------------------------------------------------------------------------------------------------------------------
    USERNAME                       'ADM_PARALLEL_EXECUTE_TASK' 'APEX_ADMINISTRATOR_ROLE' 'AQ_ADMINISTRATOR_ROLE' 'AQ_USER_ROLE'        
    ------------------------------ --------------------------- ------------------------- ----------------------- ----------------------
    ANONYMOUS                      0                           0                         0                       0          
    APEX_030200                    0                           0                         0                       0        
    APEX_PUBLIC_USER               0                           0                         0                       0    
    APPQOSSYS                      0                           0                         0                       0   
..............
    IX                             0                           0                         1                       1  
    OWBSYS                         0                           0                         1                       1      
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动态 Oracle Pivot_In_Clause 的相关文章

  • 如何在一列中存储数组或多个值

    运行 Postgres 7 4 是的 我们正在升级 我需要将 1 到 100 个选定项目存储到数据库的一个字段中 98 的情况下 只会输入 1 个项目 而 2 的情况下 如果是这样的话 会输入多个项目 这些项目只不过是文本描述 截至目前 长
  • oracle日期序列?

    我有一个 oracle 数据库 我需要一个包含 2 年所有日期的表 例如来自01 01 2011 to 01 01 2013 首先我想到了一个序列 但显然唯一支持的类型是数字 所以现在我正在寻找一种有效的方法来做到这一点 欢呼骗局 如果您想
  • SQL Server、ISABOUT、加权项

    我试图弄清楚加权项在 SQL SERVER 的 ISABOUT 查询中是如何工作的 这是我目前所在的位置 每个查询返回以下行 查询 1 权重 1 初始排名 SELECT FROM CONTAINSTABLE documentParts ti
  • 仅使用 SQL 中的 MAX 函数更新重复行

    我有一张这样的桌子 假设为了举例 NAME是一个唯一的标识符 NAME AGE VALUE Jack Under 65 3 Jack 66 74 5 John 66 74 7 John Over 75 9 Gill 25 35 11 Som
  • 在 SQL Server 中选择条件的值[重复]

    这个问题在这里已经有答案了 在查询选择中 我想显示字段是否满足条件的结果 想象一下我有一张名为stock 该表有一列告诉我库存中每种商品的数量 我想做的是这样的 SELECT stock name IF stock quantity lt
  • 动态/条件 SQL 连接?

    我在 MSSQL 表 TableB 中有数据 其中 dbo tableB myColumn 在特定日期后更改格式 我正在做一个简单的连接到该表 Select dbo tableB theColumnINeed from dbo tableA
  • 如何通过逗号分隔将 2 行合并为一行?

    我需要将这些单独的行合并到一列 我现在如何通过逗号分隔合并列 CID Flag Value 1 F 10 1 N 20 2 F 12 2 N 23 2 F 14 3 N 21 3 N
  • 动态SQL生成列名?

    我有一个查询 我正在尝试将行值转换为列名称 目前我正在使用SUM Case As ColumnName 声明 像这样 SELECT SKU1 SUM Case When Sku2 157 Then Quantity Else 0 End A
  • SQL Not Empty 代替 Not NULL

    我正在使用 postgreSQL 我有一个专栏 NOT NULL 但是 当我想插入带有空字符串的行时 如下所示 它不会给我错误并接受 我如何检查插入值应该是not empty 既不为空也不为空 PS 我的专栏定义为 ads characte
  • 出于安全目的,您是否有理由不执行自己的算法来打乱 ID?

    我计划实现我自己的非常简单的 哈希 公式 为具有多个用户的应用程序添加一层安全性 我目前的计划如下 用户创建一个帐户 此时后端会生成一个 ID ID 通过公式运行 假设 ID 57 8926 36 7 或同样随机的东西 然后 我将新的用户
  • 如何比较表中最后一个和倒数第二个条目的值?

    我在 Oracle 中有一个名为quotes 的表 其中包含两列 date 和value 我想比较表中最后一个条目和倒数第二个条目的值 在此示例中 我想获取日期13 1 和 11 1在一行中以及每个日期的值之间的差异 10 5 5 报价表
  • 数据库不存在。确保名称输入正确

    为什么我会出现这个错误 如果您查看屏幕截图 您将看到数据库 仅当我连接到两个数据库引擎时才会发生这种情况 它仅检测下面数据库引擎中的数据库 而不检测突出显示的数据库 除了关闭应用程序并仅打开一个数据库引擎之外 还有其他方法可以使用我的数据库
  • 规范“毒”方式真的值得吗? (3NF)

    我正处于数据库设计的早期阶段 所以还没有最终的结果 并且我正在为具有可选标签的线程使用 TOXI 3表设计 但我忍不住觉得加入是并不是真的必要 也许我只需要依赖我的简单标签列posts我可以在其中存储类似 varchar 的表
  • 获取 Postgres 数据库中每个表的行数

    获取数据库中所有表的行数的最有效方法是什么 我正在使用 Postgres 数据库 结果示例 table name row count some table 1 234 foobar 5 678 another table 32 如果您想要特
  • PHP 中的 SQL 语句与 phpmyadmin 中的 SQL 语句的行为不同

    I have form store sql INSERT INTO myodyssey myaccount id email username password VALUES NULL email unixmiah formtest woo
  • MS Access:在列中搜索星号/星号

    我正在寻找一种方法来搜索包含字符串数据类型的列 问题是星号或星号是保留符号 以下查询无法正常工作 select from users where instr pattern 如何编写 Access 查询来搜索列中的星号 您可以使用方括号在
  • 如何在sql中提取周数

    我有一个 varchar2 类型的转换列 其中包含以下主菜 01 02 2012 01 03 2012 etc 我使用 to date 函数将其转换为另一列中的日期格式 这是我得到的格式 01 JAN 2012 03 APR 2012 当我
  • 如何查询多对多表(一个表的值成为列标题)

    给定此表结构 我想展平多对多关系 并将一个表的名称字段中的值设置为列标题 并将同一表中的数量设置为列值 目前可行的想法是将值放入字典 哈希表 中并用代码表示这些数据 但我想知道是否有 SQL 方法可以做到这一点 我还使用 Linq to S
  • 动态 SQL 和 where case 哪个更好?

    我需要创建一个带有 12 个参数的存储过程 并使用这些参数的不同组合来过滤查询 所有 12 个参数都不是强制性的 就好像我传递 3 5 或 12 个参数取决于用户输入的搜索输入一样 我可以通过两种方式创建 即使用动态 SQL 查询或使用 C
  • 多个数据库连接

    我有三张桌子 categories content info and content The categories表包含类别的id及其 IDparent类别 The content info包含两列 entry id帖子的 ID 和cat

随机推荐

  • iOS 中如何将地图区域限制为一个国家/地区?

    我正在使用mapkit 为iOS 制作一个应用程序 我想将地图的边界限制为特定的地区 国家 有没有办法做到这一点 无法告诉地图不要滚动到某个区域之外 我能想到的唯一方法是当您撞到栅栏之一时阻止用户滚动 下面的示例是在没有测试或编译的情况下编
  • WP7 模拟器浏览器不显示任何内容

    我使用 webbrowser 控件显示应用程序中的网页 但它只显示白屏 我尝试了 Internet Explorer 但它也没有显示任何内容 任何想法如何解决这个问题 预先非常感谢 Windows Phone 模拟器需要具有 DirectX
  • 如何使用OpenCV中的convertScaleAbs()函数?

    我试图在应用索贝尔过滤后将图像转换回灰度 我有以下代码 import numpy as np import matplotlib pyplot as plt import cv2 image cv2 imread train jpg img
  • 出于安全原因,escapeshellarg() 已被禁用

    当我想以任何形式上传任何内容时 我会看到警告 出于安全原因 escapeshellarg 已被禁用在我的网站上留言 我可以做什么来解决这个问题 我的框架是 codeigniter 最终版本 这是完整的警告 A PHP Error was e
  • 垂直可滚动组件的测量具有无限大的最大高度限制,这是不允许的

    我在 recyclerview 项目布局中使用 ComposeView 来与 jetpack compose 一起使用 当我打开屏幕时遇到奇怪的问题 Error java lang IllegalStateException Vertica
  • 选择元素上的 IE6/IE7 css 边框

    有谁有使用 CSS 来设置 Internet Explorer 中 选择 元素边框样式的解决方案吗 据我所知 这在 IE 中是不可能的 因为它使用操作系统组件 这里有一个link http v2 easy designs net artic
  • mysql错误1451

    我有 mysql 错误 代码为 1451 无法删除或更新父行 外键约束失败 online store admin osa admin logs 约束fk admins logs外键 aid 参考osa admins aid 这里sql语句
  • Log4J – 运行时变量替换

    Log4J http logging apache org log4j 1 2 index html似乎有一个恼人的限制 在运行时 变量替换似乎不起作用 在这个例子中 文件 Log4j properties file pattern d I
  • 终止应用程序未捕获的异常“NSInvalidArgumentException”

    我在控制台中收到以下错误 终止应用程序未捕获的异常 NSInvalidArgumentException 原因 NSPlaceholderDictionary initWithObjects forKeys count 尝试从对象插入nil
  • Has_Many :通过 或 :finder_sql

    我已经确定了我想要的东西 但我似乎无法以 Rails 设计师正在寻找的方式得到它 基本上 我有 请搁置复数 等问题 人类 关系 父母 子女 我试图获取单亲的所有后代 以及许多后代的单亲 假设每个后代只有一个父母 我可以在模型中通过以下方式执
  • Jquery删除通过jquery svg库添加的绘制线

    在我的应用程序中 我通过 jQuery SVG 插件从一个表格单元格到另一个单元格绘制了一条线 按照博文的步骤进行操作http www openstudio fr Library for simple drawing with html h
  • 尝试重载运算符“/”时出错

    我最近开始自学游戏编程 有人推荐我从Python开始 我得到了 用Python和Pygame开始游戏开发 从新手到专业 这本书 我到达了他们教授向量和创建 Vector2 类的部分 一切都很顺利 直到我试图让除法运算符超载 我的代码是这样的
  • Django 事务管理块以挂起的 COMMIT/ROLLBACK 结束

    我有一个需要手动事务管理的视图功能 但是当我应用 transaction commit manually装饰器 django 总是引发以下异常 正如您从下面的代码跟踪中看到的 事务是在从视图返回之前提交的 我在 Windows 和 Linu
  • Laravel 4 开箱即用的语法错误

    我刚刚安装了 Laravel 4 Illuminate 当我在浏览器中打开 index php 文件时 遇到了以下错误 解析错误 语法错误 意外的 yield T YIELD 在 www Laravel4 vendor Illuminate
  • Tarjan 强连通分量算法的功能实现

    我继续说 实施的 https github com pathikrit scalgos blob master src main scala com github pathikrit scalgos Graph scala L139 the
  • 存储函数中的临时表?

    我正在编写一个函数 我需要使用TABLE变量 我听说 MySQL 中不存在它们 https stackoverflow com questions 1524858 create table variable in mysql 或临时表 但是
  • 如何仅在用户身份验证后设置 Apollo 客户端?

    我对如何构建我的 React GraphQL Apollo 应用程序感到有点困惑 因为在用户验证 登录之前不应建立连接 目前我有这个 class App extends Component render return
  • iPhone最多可以监控多少个区域?

    有人知道共享区域的最大数量是多少吗 如果超过它 您会收到 RegionMonitoringDidFail 电话吗 http developer apple com iphone library documentation CoreLocat
  • 使用 Helm 安装后 Prometheus 服务器处于挂起状态

    我是 k8s 的新手 正在尝试为 k8s 设置 prometheus 监控 我用了 helm install 来设置普罗米修斯 现在 two pods are still in pending state 普罗米修斯服务器 普罗米修斯警报管
  • 动态 Oracle Pivot_In_Clause

    我有点卡住了 我想做一个用户角色关系数据透视表 到目前为止我的查询如下所示 WITH PIVOT DATA AS SELECT FROM SELECT USERNAME GRANTED ROLE FROM DBA USERS DB LINK