【问题标题】:Select current date and status in TSQL [duplicate]在TSQL中选择当前日期和状态[重复]
【发布时间】: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


【解决方案1】:
SELECT LOAN_NUMBER, loan_type, current_status,current_Status_Date
FROM (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY LOAN_NUMBER ORDER BY current_Status_Date desc) AS [ROWNUM] 
    FROM Loan
) x WHERE x.ROWNUM = 1

**这里 Loan 是我的表名

【讨论】:

    猜你喜欢
    • 2013-08-22
    • 2014-08-20
    • 2023-03-15
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    相关资源
    最近更新 更多