【发布时间】:2019-09-03 19:17:05
【问题描述】:
我有一个从多个表中进行选择的查询。我只需要选择状态日期最新的唯一贷款。
我尝试在SELECT 子句中使用MAX,但没有奏效。
SELECT
L.LOAN_NUMBER AS [loan_number],
LAS_LOAN_DEF.LOAN_TYPE AS [loan_type] ,
WORKFLOW_STEP_DEF.STEP_NAME AS [current_status],
MAX(WORKFLOW_STEPS.ACTION_DATE) AS [current_status_date]
FROM
LOAN AS L
LEFT JOIN LAS_LOAN_DEF ON LAS_LOAN_DEF.LAS_LOAN_DEF_ID = L.LAS_LOAN_DEF_ID
LEFT JOIN WORKFLOW ON WORKFLOW.[ENTITY_ID] = L.LOAN_ID
LEFT JOIN WORKFLOW_STEPS ON WORKFLOW_STEPS.WORKFLOW_ID = WORKFLOW.WORKFLOW_ID
LEFT JOIN WORKFLOW_STEP_DEF ON WORKFLOW_STEPS.WORKFLOW_STEP_DEF_ID = WORKFLOW_STEP_DEF.WORKFLOW_STEP_DEF_ID
GROUP BY
L.LOAN_NUMBER,
LAS_LOAN_DEF.LOAN_TYPE,
WORKFLOW_STEP_DEF.STEP_NAME,
WORKFLOW_STEPS.ACTION_DATE
这是我得到的结果集,不是唯一的。
+-------------+---------------+----------------+-------------------------+
| loan_number | loan_type | current_status | current_status_date |
+-------------+---------------+----------------+-------------------------+
| 12200 | Business | Analysis | 2019-08-15 13:43:42.733 |
| 12200 | Business | Underwriting | 2019-08-15 13:43:53.577 |
| 13300 | Business | Analysis | 2019-08-23 15:47:49.087 |
| 13300 | Business | Underwriting | 2019-08-23 16:47:40.700 |
+-------------+---------------+----------------+-------------------------+
我要找的结果集是这样的:
+-------------+---------------+----------------+-------------------------+
| loan_number | loan_type | current_status | current_status_date |
+-------------+---------------+----------------+-------------------------+
| 12200 | Business | Underwriting | 2019-08-15 13:43:53.577 |
| 13300 | Business | Underwriting | 2019-08-23 16:47:40.700 |
+-------------+---------------+----------------+-------------------------+
我该如何解决这个问题?
【问题讨论】:
-
您使用什么版本的 SQL?试试 LAST_VALUE()
-
SQL Server 2016
标签: sql sql-server tsql