gpt4 book ai didi

sql - 甲骨文 11g : only return a value if row is first or last in group

转载 作者:行者123 更新时间:2023-12-04 21:55:30 26 4
gpt4 key购买 nike

我正在尝试从 Oracle 查询创建报告。数据是这样的:

GROUP_ID | COUNT_1 | COUNT_2
1 | 100 | 123
1 | 101 | 123
1 | 283 | 342
1 | 134 | 123
2 | 241 | 432
2 | 321 | 920
2 | 432 | 121
2 | 135 | 342

我想要做的是仅在组中的第一个时返回 GROUP_ID,并且在组中的最后一个时返回一些其他值,例如
GROUP_ID | COUNT_1 | COUNT_2
1 | 100 | 123
| 101 | 123
| 283 | 342
last | 134 | 123
2 | 241 | 432
| 321 | 920
| 432 | 121
last | 135 | 342

这可能吗?

谢谢!

最佳答案

未测试,但这应该是想法。如果您需要按 COUNT_1 或 COUNT_2 排序,则应将其包含在分析函数的 over 中。条款,partition by GROUP_ID order by COUNT_1
引用 here了解什么是解析函数。

select
case when ROW_NUMBER = 1 then GROUP_ID
when ROW_NUMBER = GROUP_COUNT then 'last'
else NULL
end GROUP_ID
,COUNT_1
,COUNT_2
from(
select
GROUP_ID
,COUNT_1
,COUNT_2
,row_number() over(partition by GROUP_ID) ROWNUMBER
,count(GROUP_ID) over (partition by GROUP_ID) GROUP_COUNT
from
FOO
)

关于sql - 甲骨文 11g : only return a value if row is first or last in group,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17085347/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com