Sql server SQL-基于另一列返回唯一的列值

Sql server SQL-基于另一列返回唯一的列值,sql-server,Sql Server,我是sql新手,需要一些帮助,根据value\u类型列提取客户代码的最新交易编号 下表列出了这些值: 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

我是sql新手,需要一些帮助,根据value\u类型列提取客户代码的最新交易编号

下表列出了这些值:

   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
四处搜索后,我找到了以下查询,但它只返回每种类型的最后一次事务时间:

从客户t1中选择客户代码、交易号、交易类型、交易时间 其中t1.Time_of_trans=

从客户t2中选择最大传输时间,其中t2.trans\u type=t1.trans\u type

有没有一个查询可以返回我想要的东西? 谢谢

使用行号:


上述查询将为具有相同客户代码和交易类型的每组记录分配一个行号(从一开始)。此编号将以交易时间确定的最新记录开始。然后,我们子查询以仅保留每个组中的第一条此类记录。

谢谢,当运行查询时,我得到以下信息:Msg 102,级别15,状态1,第35行“PARTITON”附近的语法不正确。我正在一个2014 SQL Express实例上测试这一点。修正输入错误,查询就可以了。谢谢!我没有发现打字错误。这很有效。非常感谢!
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;