Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL分组奇偶_Sql_Oracle - Fatal编程技术网

SQL分组奇偶

SQL分组奇偶,sql,oracle,Sql,Oracle,我必须对某些数据进行分组,以便将其分为两组 所附图片包含实际数据、预期结果和我使用的查询数据的详细信息 我确信我在max option的分组中遗漏了一些内容。请帮助 select agrmnt_id ,location_name, slab_no,target_start,target_end, tier_perc ,mod(RANK, 2) col from (select agrmnt_id ,location_name, slab_no, target as targ

我必须对某些数据进行分组,以便将其分为两组

所附图片包含实际数据、预期结果和我使用的查询数据的详细信息

我确信我在max option的分组中遗漏了一些内容。请帮助

  select agrmnt_id ,location_name, slab_no,target_start,target_end, tier_perc ,mod(RANK, 2) col from 
        (select agrmnt_id ,location_name, slab_no, target as target_start ,LAG(target) OVER (PARTITION BY location_name ORDER BY slab_no DESC)-1 as target_end  ,PAY_PREC|| '%' as tier_perc,
          DENSE_RANK() over(partition by agrmnt_id order by location_name) RANK
        from plb_addnl_slab_details 
        where agrmnt_id='PLBCAI140262' order by location_name,slab_no
        )) group by agrmnt_id,location_name ,slab_no
        order by location_name1 ,slab_no1,  location_name2 ,slab_no2

如果我理解你想要什么,这是非常值得怀疑的,看起来你能够生成一个包含所有你想要的值的列表,但是你不能让它们在两个集合中对齐?如果是这样的话,我认为您需要将初始列表视为一个基本视图,并使用
col
值将其与自身连接起来,以确定哪个在第一组中,哪个在第二组中

加入的标准似乎有点模糊。如果我添加另一个排名以阻止相同的值在第二列中出现两次,我可以通过以下方式获得您的预期结果:

with t as (
  select agrmnt_id, location_name, slab_no, target_start, target_end,
    tier_perc , mod(col_rnk, 2) col, rnk
  from (
    select agrmnt_id, location_name, slab_no, target as target_start,
      LAG(target) OVER (PARTITION BY location_name
        ORDER BY slab_no DESC)-1 as target_end,
      SLAB_PERC|| '%' as tier_perc,
      DENSE_RANK() over(partition by agrmnt_id order by location_name) col_rnk,
      RANK() over(partition by agrmnt_id, slab_no order by location_name) rnk
    from plb_addnl_slab_details
    where agrmnt_id='PLBCAI140262'
  )
)
select t1.agrmnt_id as agrmnt_id_1, t1.location_name as location_name_1,
  t1.slab_no as slab_no_1, t1.target_start as target_start_1,
  t1.target_end as target_end_1,
  t2.agrmnt_id as agrmnt_id_2, t2.location_name as location_name_2,
  t2.slab_no as slab_no_2, t2.target_start as target_start_2,
  t2.target_end as target_end_2
from t t1
left join t t2 on t2.agrmnt_id = t1.agrmnt_id
and t2.slab_no = t1.slab_no
and t2.rnk = t1.rnk + 1
and t2.col = 0
where t1.col = 1
order by t1.agrmnt_id, t1.location_name, t1.slab_no;

。我不相信那些连接条件(或新的秩)是完全正确的,但是如果没有更多的数据,或者没有关于您想要使用的逻辑的更多信息,就无法真正判断。希望这能给你一些你可以适应的东西。

你的模式和数据的图像不是很有帮助。文本更加友好。更好的方法是设置一个,尽管您现在的查询得到一个ORA-00933;但是它在哪里?您的
订单中的列/别名是否按
排序?链接这些的标准是什么,
slab\u no
?你如何选择链接的顺序?奇数/偶数从何而来?请把你的逻辑解释清楚。。。