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