1

法律事務所のさまざまなクライアントおよびマター情報を取得するために、以下のクエリを作成しました。-基本的に、過去3年間に、誰がどのクライアントのどの問題に取り組んだかを確認する必要があります。

Matter Creation Dateに加えて、Transaction Date --TT.TRAN_DATE-(請求時間)を取得するように求められました。これにより、誰が最近何かに取り組んだかをはるかに正確に確認できます。問題は、クライアント/マター/手数料の稼ぎ手ごとに複数の取引日があり、実際に確認する必要があるのは最新の取引日だけであるということです。

残念ながら私は苦労していて時間が短いです。誰かが上記のクエリを変更して、クライアント/問題/手数料の稼ぎ手ごとに最大取引日のみが返されるようにする方法を教えてもらえますか?日付も、既存の「物質作成日」フィールドと同じ形式である必要があります。

よろしくお願いします、ギャビン

SELECT DISTINCT HC.CLIENT_NAME AS [Client Name],
  HC.CLIENT_CODE AS [Client Code],
  HM.MATTER_CODE AS [Matter Code], 
  HM.CLNT_MATT_CODE AS [Client Matter Code],
  convert(varchar,HM.OPEN_DATE,103) AS [Matter Creation Date],
  HP.EMPLOYEE_CODE AS [Fee Earner Code],
  HP.EMPLOYEE_NAME AS [Fee Earner Name],
  TT.TRAN_DATE AS [Transaction Date]
  FROM        HBM_MATTER HM  
  LEFT OUTER JOIN TAT_TIME TT 
        ON    HM.MATTER_UNO=TT.MATTER_UNO
  LEFT JOIN   HBM_CLIENT HC 
        ON    HM.CLIENT_UNO=HC.CLIENT_UNO 
  LEFT JOIN   HBM_PERSNL HP 
        ON    TT.TK_EMPL_UNO=HP.EMPL_UNO 
  WHERE             HM.INACTIVE='n' 
  AND         HM.STATUS_CODE <> 'CLOSE'
  AND         HP.INACTIVE = 'N'
  AND         TT.TRAN_DATE > dateadd(month,-36,getdate()) 
  ORDER BY    HC.CLIENT_CODE,   HM.MATTER_CODE
4

1 に答える 1

2

指定しなかったためにSQLServerを想定すると、これが私の解決策です。確認できませんが、大丈夫だと思います。

    WITH cte AS (SELECT DISTINCT 
      HC.CLIENT_NAME AS [Client Name]
      ,HC.CLIENT_CODE AS [Client Code]
      ,HM.MATTER_CODE AS [Matter Code]
      ,HM.CLNT_MATT_CODE AS [Client Matter Code]
      ,CONVERT(VARCHAR,HM.OPEN_DATE,103) AS [Matter Creation Date]
      ,HP.EMPLOYEE_CODE AS [Fee Earner Code]
      ,HP.EMPLOYEE_NAME AS [Fee Earner Name]
      ,TT.TRAN_DATE AS [Transaction Date]
      ,ROW_NUMBER() OVER(PARTITION BY HC.CLIENT_CODE, HM.MATTER_CODE, HP.EMPLOYEE_CODE 
                          ORDER BY TT.TRAN_DATE DESC) AS trans_order 
    FROM HBM_MATTER HM  
      LEFT OUTER JOIN TAT_TIME TT ON HM.MATTER_UNO=TT.MATTER_UNO
      LEFT OUTER JOIN HBM_CLIENT HC ON HM.CLIENT_UNO=HC.CLIENT_UNO 
      LEFT OUTER JOIN HBM_PERSNL HP ON TT.TK_EMPL_UNO=HP.EMPL_UNO 
    WHERE HM.INACTIVE = 'n' 
      AND HM.STATUS_CODE <> 'CLOSE'
      AND HP.INACTIVE = 'N'
      AND TT.TRAN_DATE > DATEADD(MONTH, -36, GETDATE()) 
   )
    SELECT * FROM cte 
    WHERE trans_order = 1
     ORDER BY 
      CLIENT_CODE
      ,MATTER_CODE 
于 2013-03-27T10:18:15.317 に答える