具有聚合功能的解决方案的替代方案

时间:2018-06-20 09:59:45

标签: sql oracle

我想选择所有我没有权限对其执行INSERT操作的对象。我想出了一个使用聚合函数的解决方案:

$(function(){
  console.log($('input:checked').closest('.product-option').find('.option-sku').html());
})

如果没有聚合函数,我无法考虑如何解决此问题,但是我敢肯定这是可能的。怎么办?

2 个答案:

答案 0 :(得分:1)

您可以使用以下方式列出对象:

select table_schema, table_name, type
from all_tab_privs
group by table_schema, table_name, type
having count(case when privilege = 'INSERT' then privilege end) = 0
order by type, table_schema, table_name;

如果要在一行上查看您的 具有的特权,那么您仍然需要使用listagg();但这是一个汇总函数,而不是解析函数,在原始查询中以及在此处如何使用时都如此:

select table_schema, table_name, type,
  listagg(privilege, '; ') within group (order by privilege) as privileges
from all_tab_privs
group by table_schema, table_name, type
having count(case when privilege = 'INSERT' then privilege end) = 0
order by type, table_schema, table_name;

答案 1 :(得分:0)

具有GROUP BY和HAVING的解决方案:

private void CloseLWindow_Completed(object sender, EventArgs e)
{
    Dispatcher.BeginInvoke(new Action(() => Close()));
}