Sybase子组排序依据

时间:2018-08-16 19:29:43

标签: tsql sybase sybase-ase

我正在尝试加入一个子查询,但是由于该表不包含唯一的row_id,并且我需要特定类型的最新记录,因此我想按Date Desc排序并从中获得前1名,但是Sybase ASE中似乎不允许使用它。

我整理了一个小样本来展示我要做什么。

CREATE TABLE #test_users (USER_ID CHAR(9), USER_CK INT)
INSERT INTO #test_users (USER_ID, USER_CK) 
          SELECT 'QA0000001', 123000010
UNION ALL SELECT 'QA0000002', 123000020
UNION ALL SELECT 'QA0000003', 123000030
UNION ALL SELECT 'QA0000004', 123000040
UNION ALL SELECT 'QA0000005', 123000050

CREATE TABLE #test_records (STAT_TYPE CHAR(3), USER_CK INT, MOD_DT DATE, PLAN_ID CHAR(1))
INSERT INTO #test_records (STAT_TYPE, USER_CK, MOD_DT, PLAN_ID) 
          SELECT 'ADD', 123000010, '8/1/2017', 'A'
UNION ALL SELECT 'TRM', 123000010, '6/1/2018', 'A'
UNION ALL SELECT 'ADD', 123000010, '6/1/2018', 'B'
UNION ALL SELECT 'ADD', 123000020, '5/1/2017', 'A'
UNION ALL SELECT 'TRM', 123000020, '9/1/2018', 'A'
UNION ALL SELECT 'ADD', 123000030, '3/1/2018', 'A'
UNION ALL SELECT 'ADD', 123000040, '4/1/2018', 'A'
UNION ALL SELECT 'ADD', 123000050, '1/1/2018', 'B'
UNION ALL SELECT 'TRM', 123000050, '7/1/2018', 'B'
UNION ALL SELECT 'ADD', 123000050, '7/1/2018', 'A'


--Want to know everyone that has ever been in Plan A, and what their last status type was.
--Should return 
--  QA0000001, A, TRM, 6/1/2018
--  QA0000002, A, TRM, 9/1/2018
--  QA0000003, A, ADD, 3/1/2018
--  QA0000004, A, ADD, 4/1/2018
--  QA0000005, A, ADD, 7/1/2018
SELECT u.USER_ID, r.PLAN_ID, r.STAT_TYPE, r.MOD_DT FROM #test_users u
LEFT JOIN #test_records r 
    ON PLAN_ID = 'A'
    AND u.USER_CK = r.USER_CK

感谢您可以提供的任何帮助。 迈克

0 个答案:

没有答案