有序查询的第一组值

乔尔

我有一个表,表示一组按组中名为 sequence 的列排序的集合:

| GroupId | Collection | Sequence |
|---------|------------|----------|
| 002     | A.2018     | 1        |
| 002     | A.2017     | 2        |
| 003     | P.2018     | 1        |
| 003     | L.2018     | 2        |
| 003     | R.2018     | 3        |
| 003     | M.2018     | 4        |

在另一个表中,我有按集合和细分的客户销售额:

| Collection | Segment | Customer | Sales  |
|------------|---------|----------|--------|
| A.2018     | 002     | C001030  | 304.30 |
| A.2017     | 002     | C001030  | 493.10 |
| L.2018     | 002     | C001030  | 232.33 |
| L.2018     | 010     | C001030  | 343.12 |
| R.2018     | 002     | C001030  | 434.23 |
| M.2018     | 002     | C001030  | 121.12 |

我想通过 GroupID 获取客户在该细分市场中有销售额的第一个集合(按集合顺序排序)。

| GroupID | Collection | Segment | Customer | Sales  |
|---------|------------|---------|----------|--------|
| 002     | A.2018     | 002     | C001030  | 304.30 |
| 003     | L.2018     | 002     | C001030  | 232.33 |
| 003     | L.2018     | 010     | C001030  | 343.12 |
q4za4
SELECT * FROM (
with t1 as (
SELECT '002' as groupid,      'A.2018' as collection, 1 as sequence FROM DUAL UNION ALL
SELECT '002','A.2017',2 FROM DUAL UNION ALL
SELECT '003','P.2018',1 FROM DUAL UNION ALL
SELECT '003','L.2018',2 FROM DUAL UNION ALL
SELECT '003','R.2018',3 FROM DUAL UNION ALL
SELECT '003','M.2018',4 FROM DUAL
),
    t2 as (
SELECT 'A.2018' as collection,'002' as segment ,'C001030' as customer,304.30 as sales  FROM DUAL UNION ALL
SELECT 'A.2017','002','C001030',493.10  FROM DUAL UNION ALL
SELECT 'L.2018','002','C001030',232.33  FROM DUAL UNION ALL
SELECT 'L.2018','010','C001030',343.12  FROM DUAL UNION ALL
SELECT 'R.2018','002','C001030',434.23  FROM DUAL UNION ALL
SELECT 'M.2018','002','C001030',121.12  FROM DUAL
) 
SELECT groupid,
       t1.collection,
       segment,
       customer,
       sales,
       row_number() over (partition by groupid,segment,customer order by t1.collection ASC) rn
FROM   t2,
       t1
WHERE  t1.collection = t2.collection
)
WHERE rn = 1

输出:

GROUPID COLLECTION  SEGMENT CUSTOMER    SALES   RN
002 A.2017  002 C001030 493.1   1
003 L.2018  002 C001030 232.33  1
003 L.2018  010 C001030 343.12  1

但:

您预期的 002 组输出是

002     | A.2018     | 002     | C001030  | 304.30 |

你写道:

“第一个集合(按集合顺序排序)”

所以这里的第一个系列是A.2017,我想。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取第一组html的值

来自分类Dev

Linq选择第一组

来自分类Dev

按R中第一组的顺序排列df中的所有组

来自分类Dev

如何确保具有替代模式的第二组与第一组匹配?

来自分类Dev

将 GroupBy 与 Concat 一起使用仅返回第一组值

来自分类Dev

R中数据帧行中第一组连续值的返回列索引

来自分类Dev

使用c#Linq获取XML中的第一组值

来自分类Dev

PHP代码仅从提交的HTML表单中打印出第一组值

来自分类Dev

删除第一组数字之后的所有数字

来自分类Dev

sql-确定第一组记录

来自分类Dev

sed搜索范围并打印第一组

来自分类Dev

在语法中找到第一组

来自分类Dev

按第一组元素dplyr排序

来自分类Dev

如何为递归语法找到第一组

来自分类Dev

CSS-仅选择第一组类

来自分类Dev

在语法中找到第一组

来自分类Dev

Python:提取第一组引号内的数据?

来自分类Dev

在行中显示第一组结果

来自分类Dev

如何仅删除模式的第一组?

来自分类Dev

Python-返回第一组嵌套括号中的所有子字符串

来自分类Dev

在一组重复的有序元素中表达递归引用

来自分类Dev

在一组重复的有序元素中表达递归引用

来自分类Dev

使用收音机和复选框,从第二组中添加多个值,从第一组中添加一个值

来自分类Dev

正则表达式多组,第一组不包括最后一组

来自分类Dev

如果第一组的最后一个数字是 x 那么

来自分类Dev

PostgreSQL:获取有序组的第一项不起作用

来自分类Dev

正则表达式只返回第一组

来自分类Dev

Grep第一组正则表达式

来自分类Dev

查找第一组连续数字php正则表达式