首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql -基于多个值从组中选择行

sql -基于多个值从组中选择行
EN

Stack Overflow用户
提问于 2012-03-16 13:52:17
回答 2查看 1.1K关注 0票数 1

我有一张桌子,像:

代码语言:javascript
复制
| ID    | Val |
+-------+-----+
| abc-1 |  10 |
| abc-2 |  30 |
| cde-1 |  10 |
| cde-2 |  10 |
| efg-1 |  20 |
| efg-2 |  11 |

并且希望根据子字符串(ID,1,3)最小值和ist获得结果,如果Val有重复的,那么必须是第一个

代码语言:javascript
复制
| ID    | Val |
+-------+-----+
| abc-1 |  10 |
| cde-1 |  10 |
| efg-2 |  11 |

问题是我被卡住了,因为我不能使用组按子字符串(ID,1,3),ID,因为它将再次有2行(每一行用于abc-1和abc-2)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-16 13:54:59

代码语言:javascript
复制
WITH
  sorted
AS
(
  SELECT
    *,
    ROW_NUMBER() OVER (PARTITION BY substring(id,1,3) ORDER BY val, id) AS sequence_id
  FROM
    yourTable
)
SELECT
  *
FROM
  sorted
WHERE
  sequence_id = 1
票数 9
EN

Stack Overflow用户

发布于 2012-03-16 14:01:34

代码语言:javascript
复制
SELECT SUBSTRING(id,1,3),MIN(val) FROM Table1 GROUP BY SUBSTRING(id,1,3);

您使用的是两个SUBSTRING( id ,1,3),id而不是SUBSTRING(id,1,3)对列进行分组。在下面的链接中,它完美地工作在fine.Check中--同样的例子。

http://sqlfiddle.com/#!3/fd9fc/1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9738491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档