데이터 테이블
CREATE TABLE [dbo].[Data](
[RecordNumber] [int] NULL,
[Data1] [nvarchar](10) NULL,
[Data2] [nvarchar](10) NULL
) ON [PRIMARY]
승인 표
CREATE TABLE [dbo].[Approval](
[RecordNumber] [int] NOT NULL,
[ApprovedByLevel] [int] NOT NULL,
[ApprovedByName] [nvarchar](50) NOT NULL
) ON [PRIMARY]
승인 테이블에는 기록 번호와 기록을 승인하는 사람이 저장됩니다.
많은 사람들이 동일한 레코드를 승인하고 마지막으로 데이터 테이블을 결합하여 최종 승인자 레벨 및 이름 만 표시하고 싶습니다.
결과에 대한 쿼리 예상
Ms-SQL Server 2014 사용
최신 정보
이것에
https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=d1c10b03c62b282d096a1f7d7dbfca4b
나는 결과를 얻고 싶다.
row_number()
창 함수를 사용 [ApprovedByLevel]
하여 결과에서 원하는 것을 얻을 수 있습니다 .
select d.*,
COALESCE(a.[ApprovedByLevel], 0) AS [ApprovedByLevel],
a.[ApprovedByName]
from [Data] d left join (
select *,
row_number() over (partition by [RecordNumber] order by [ApprovedByLevel] desc) rn
from [Approval]
) a
on a.[RecordNumber] = d.[RecordNumber] and a.rn = 1
데모를 참조하십시오 .
결과 :
> RecordNumber | Data1 | Data2 | ApprovedByLevel | ApprovedByName
> -----------: | :---- | :---- | --------------: | :-------------
> 1001 | A | AA | 3 | Mr.C
> 1002 | B | BB | 5 | Mr.DD
> 1003 | C | CC | 0 |
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다