SQL - 返回基于另一列独特的列值

我是新来的SQL需要一些帮助与基于VALUE_TYPE列提取最新的交易编号为客户代码SQL - 返回基于另一列独特的列值

我与这些值如下表:

cust_code Trans_no trans_Type Time_of_trans 

RTST RTST#289 128 2017-12-13 13:23:16.000

RTST RTST#290 8 2017-12-13 13:18:52.000

RTST RTST#291 4 2017-12-13 13:12:37.000

NBST NBST#789 128 2017-12-13 13:12:36.000

RTST RTST#293 4 2017-12-12 12:27:12.000

DIFD DIFD#2 4 2017-12-12 12:27:12.000

RTST RTST#295 4 2017-12-12 12:26:15.000

NBST NBST#784 4 2017-12-12 12:26:15.000

RTST RTST#297 4 2017-12-12 11:13:29.000

我想运行一个查询,将只显示所有客户代码的所有类型的最新trans_no。

我希望到输出,显示是这样的:

cust_code Trans_no trans_Type Time_of_trans 

RTST RTST#289 128 2017-12-13 13:23:16.000

RTST RTST#290 8 2017-12-13 13:18:52.000

RTST RTST#291 4 2017-12-13 13:12:37.000

NBST NBST#789 128 2017-12-13 13:12:36.000

NBST NBST#784 4 2017-12-12 12:26:15.000

DIFD DIFD#7 4 2017-12-12 12:27:12.000

DIFD DIFD#5 8 2017-12-12 09:57:44.000

DIFD DIFD#4 128 2017-12-12 09:53:44.000

已经四处搜寻我发现下面的查询,但它只返回的最后交易时间为每个类型:

SELECT CUST_CODE,trans_no ,TRANS_TYPE,Time_of_trans从客户点t1 WHERE = t1.Time_of_trans

(SELECT MAX(Time_of_trans)来自客户的T 2,其中t2.trans_type = t1.trans_type )

是否有一个查询会返回我以后的内容? 感谢

回答:

使用ROW_NUMBER

SELECT cust_code, Trans_no, trans_Type, Time_of_trans 

FROM

(

SELECT cust_code, Trans_no, trans_Type, Time_of_trans,

ROW_NUMBER() OVER (PARTITION BY cust_code, trans_Type ORDER BY Time_of_trans DESC) rn

FROM yourTable

) t

WHERE t.rn = 1;

上面的查询将分配的行编号,从1开始,到每个组的具有相同的客户代码和交易类型的记录。此编号将从最新的记录开始,由交易时间确定。然后,我们子查询只保留每个组的第一个这样的记录。

以上是 SQL - 返回基于另一列独特的列值 的全部内容, 来源链接: utcz.com/qa/262635.html

回到顶部