如何从特定列获取具有最大值的行

时间:2019-08-16 13:40:35

标签: sql greatest-n-per-group

我有一张桌子有

customer  -  form - formseq  -   code   - seq  -  answer   
1         -    f1 -  0001    -   stop   -  1   -   0850
1         -    f1 -  0001    -   start  -  1   -   0925
1         -    f1 -  0001    -   stop   -  2   -   0852
1         -    f1 -  0002    -   stop   -  1   -   1325
1         -    f1 -  0002    -   start  -  1   -   143
1         -    f1 -  0002    -   start  -  2   -   1437

我需要做的是获取每个客户,form和formseq顺序最高的行,这样我的最终数据将是

customer  -  form -  formseq    -  code -  seq   - answer   
1         -   f1   -  0001    -    start -   1  -    0925
1       -     f1   - 0001    -     stop  -   2   -   0852
1      -      f1   -  0002    -     stop  -   1   -   1325
1     -      f1    - 0002    -     start  -  2   -   1437

执行子查询对我来说是新的,所以寻找按特定形式和代码分组的方法。我需要在每种表格上输入20个代码来获取最后输入的值。

最初,我只是尝试获取一个代码,以查看我是否做对了,而我无法使其正常工作。我什至靠近吗?

SELECT tt.*
FROM table tt
INNER JOIN
    (SELECT customer, MAX(seq) AS seq
    FROM table
    GROUP BY customer) groupedtt 
ON tt.customer = groupedtt.customer 
AND tt.seq = groupedtt.seq where code='start' and form='f1' and formseq='0001'

我想结束每一个唯一表单的数据行,并且表单上具有最高seq的代码,因为这是最后输入的表单。

0 个答案:

没有答案