sql - 如何从 oracle SQL 的结果中选择唯一记录?
问题描述
我在 oracle 数据库上运行 SQL 查询。
SELECT DISTINCT flow_id , COMPOSITE_NAME FROM CUBE_INSTANCE where flow_id IN(200148,
200162);
我得到的结果如下。
200162 ABCWS1
200148 ABCWS3
200162 ABCWS2
200148 OutputLog
200162 OutputLog
在这个结果中 200162 出现三次,因为每个结果中的复合名称都不同。但我的要求是只获得第一行 200162 的一行。如果结果多次包含相同的 flow_id,那么它应该只显示第一个 flow_id 的结果并忽略它在第 2 和第 3 中的任何内容。
EXPECTED OUTPUT -
200162 ABCWS1
200148 ABCWS3
你能帮我修改查询吗?
先感谢您 !!!
解决方案
看来您想为每个取字典序上的第一个复合名称flow_id
:
WITH cte AS (
SELECT t.*, ROW_NUMBER() OVER (PARTITION BY flow_id ORDER BY COMPOSITE_NAME) rn
FROM CUBE_INSTANCE t
WHERE flow_id IN (200148, 200162)
)
SELECT flow_id, COMPOSITE_NAME
FROM cte
WHERE rn = 1;
推荐阅读
- python - 对于可以离线工作的 python 客户端应用程序,建议使用哪个数据库
- selenium-webdriver - 使用节点js和角度js的硒元素不可交互错误
- dynamics-crm - D365 v9 升级导致问题
- laravel - 在另一个系统上使用数据库安装 Laravel
- android - 试图在 Backendless 中添加关系。没有错误,但添加的关系总数始终为 0
- r - 即使在 R 中使用 set.seed() 也会产生不同的结果
- clojure - clojure中的object-like-map和collection-like-map有什么区别?
- java - 控制台输入,使用 Maven 在 NetBeans 9 中丢失 UTF8 编码
- json - 如何在 Spark Scala 中读取嵌套 JSON?
- azure-gov - 有没有办法提前知道使用哪个广告进行身份验证?