我希望从具有以下结构的表中获取具有开始日期和结束日期的不同行。我不希望重复的行具有相同的开始和结束月份。请注意,此处的开始日期和结束日期为NUMBER类型,而不是日期。
tbl_app_ranges:
rg_id start_month end_month
105 200401 200409
105 200401 200409
110 200701 200712
110 200701 200710
我想要的是以下结果集
rg_id start_month end_month
105 200401 200409
110 200701 200712
110 200701 200710
我知道这可以通过分析来完成,但不知道如何。有没有办法在纯SQL中执行此操作?我需要查询来对抗Oracle数据库。
答案 0 :(得分:2)
您可以在查询中使用GROUP BY rg_id, start_month, end_month
。
答案 1 :(得分:2)
select distinct rgid,start_month,end_month from tbl_app_ranges;
答案 2 :(得分:1)
select rg_id, start_month, end_month from tbl_app_ranges
group by end_month, start_month, rg_id
答案 3 :(得分:1)
试试这个:
print
SQL DISTINCT子句示例将返回每个唯一的开始月份和月份月份组合。
答案 4 :(得分:0)
你问,
我知道这可以通过分析来完成,但不知道如何。
如果您想在 Google Analytics 中执行此操作,则可以使用 ROW_NUMBER()分析功能。
select rg_id, start_month, end_month from (
select rg_id,
start_month,
end_month,
ROW_NUMBER() OVER(PARTITION BY rg_id,
start_month,
end_month
ORDER BY rg_id) rn
from tbl_app_ranges)
WHERE rn = 1;
查询的工作原理:
ROW_NUMBER
为PARTITION BY
子句中指定的每个组分配有序的row_number。排序由ORDER BY
子句处理。 Thsi成为内部子查询,外部查询根据row_number
过滤行。