>source

테이블이 4 개 있어요

  • ProjectTable

    projectid: INT (pk)
    modifiedDate: DateTime2
    ...
    
    

  • ProjectFinalizeTable

    id: INT (pk)
    projectid: INT (fk)
    modifiedDate: DateTime2
    ...
    
    

  • ProjectAdditionalTimeTable

    id: INT (pk)
    projectid: INT (fk)
    modifiedDate: DateTime2
    ...
    
    

  • ProjectCompleteTable

    id: INT (pk)
    projectid: INT (fk)
    modifiedDate: DateTime2
    ...
    
    

  • 사용자의 작업에 따라 테이블이 수정됩니다. 모든 테이블에는 ProjectTable의 foreignKey로 projectId가 있습니다.

    나는 최신 정보를 얻고 싶다 modifiedDate 테이블에서. 전의: ProjectFinalizeTable 최신을 가질 수 있습니다 modifiedDate 쿼리에서 that-date가 반환됩니다.

    내가 원하는 것이 무엇인지 알려면 아래 쿼리 (노트: 아래 쿼리는 내가 정확히 무엇을 찾고 있는지에 대한 아이디어를 제공하는 것입니다)

    Select MAX(pt.modifiedDate, pat.modifiedDate, pft.modifiedDate, pct.modifiedDate) as latestModifiedDate 
    from ProjectTable pt 
    join ProjectFinalizeTable pft pt.projectid = pft.projectid
    join ProjectAdditionalTimeTable pat pt.projectid = pat.projectid
    join ProjectCompleteTable pct pt.projectid = pct.projectid
    
    

    나는 겪었다많은 링크 하지만 계산 방법을 찾을 수 없습니다 MAX(Date) 여러 테이블에서.

    • 답변 # 1

      당신이 원하는 것을 감안할 때 max(modifiedDate) 다수의 테이블에서 이들을 결합하고 집계하는 것이 갈 길인 것처럼 보일 것입니다.

      with cte as (
          select projectId, modifiedDate
          from dbo.ProjectTable
          union all
          select projectId, modifiedDate
          from dbo.ProjectFinalizeTable
          union all
          select projectId, modifiedDate
          from dbo.ProjectAdditionalTimeTable
          union all
          select projectId, modifiedDate
          from dbo.ProjectCompleteTable
      )
      select projectId, max(modifiedDate)
      from cte
      group by projectId;
      
      

    • 답변 # 2

      이것을 시도 할 수 있습니다. 확인할 수는 없지만.

      SELECT 
         PT.projectid,
         (SELECT MAX(LastModifiedDate)
            FROM (VALUES (PT.ModifiedDate),(PFT.ModifiedDate),(PATT.ModifiedDate), (PCT.ModifiedDate)) AS UpdateDate(LastModifiedDate)) 
          AS LastModifiedDate
      FROM
      ProjectTable PT
      JOIN ProjectFinalizeTable PFT ON PT.projectid = PFT.projectid
      JOIN ProjectAdditionalTimeTable PATT ON PT.projectid = PATT.projectid
      JOIN ProjectCompleteTable PCT ON PT.projectid = PCT.projectid
      
      

    관련 자료

  • 이전 python - Numpy에서 더 빠른 행렬 계산
  • 다음 django-queryset 객체에 대한 Python 정렬 함수