임시 테이블에서 고유 한 행을 가져와 aspx 페이지로 출력하려고합니다. 한 열의 값을 사용하고 해당 열의 마지막 항목을 가져 오려고합니다.두 개의 열 값을 기반으로 고유 한 행을 얻는 중
저는 inner join
과 max()
을 사용하려고했습니다. 그러나 나는 실패했다.
다음 코드는 내가 수행하려고 시도한 코드입니다.
Declare @TempTable table (
viewIcon nvarchar(10),
tenderType nvarchar(20),
diaryIcon int,
customerName nvarchar(100),
projectName nvarchar(100),
diaryEntry nvarchar(max),
diaryDate nvarchar(20),
pid nvarchar(20)
)
insert into @TempTable(
viewIcon,
tenderType,
diaryIcon,
customerName,
projectName,
diaryEntry ,
diaryDate ,
pid
)
select p.viewicon,
p.[Tender Type],
1 diaryicon,
c.[Customer Name],
co.[Last Project],
d.Action,
co.[Diary Date],
p.PID
From Projects2 p Inner Join
(select distinct Pno, max(convert(date,[date of next call],103)) maxdate from ProjectDiary group by Pno
) td on p.PID = td.Pno
Inner Join contacts3 co on co.[Customer Number] = p.[Customer Number]
Inner Join Customers3 c on p.[Customer Number] = c.[Customer Number]
Inner Join ProjectDiary d on td.Pno = d.Pno
Where CONVERT(Date, co.[Diary Date], 103) BETWEEN GETDATE()-120 AND GETDATE()-60
DECLARE @contactsTable TABLE
(pid nvarchar(200),
diaryDate date)
insert into @contactsTable (t.pid, t.diarydate)
select distinct pid as pid, MAX(CONVERT(DATE, diaryDate, 103)) as diaryDate from @ TempTable t group by pid
DECLARE @tempContacts TABLE
(pid nvarchar(200))
insert into @tempContacts(pid)
select pid from @contactsTable
DECLARE @tempDiaryDate TABLE (diaryDate date)
insert into @tempDiaryDate(diaryDate)
select distinct MAX(CONVERT(DATE, diaryDate, 103)) from @TempTable
select t.* from @TempTable t inner join (select distinct customerName, M AX(CONVERT(DATE, diaryDate, 103)) AS diaryDate from @TempTable group by customerName) tt on t t.customerName=t.customerName
where t.pid not in
(select Pno from ProjectDiary where convert(date,[Date Of Next Call],103) > GETDATE())
and t.viewIcon <> '098'
and t.viewIcon <> '163'
and t.viewIcon <> '119'
and t.pid in (select distinct pid from @tempContacts)
and CONVERT(DATE, t.diaryDate, 103) in (select distinct CONVERT(DATE, diaryDate, 103) f rom @tempDiaryDate)
order by CONVERT(DATE, tt.diaryDate, 103)
어떤 레코드를 사용할지 결정하기 위해 최대 날짜를 사용하는 모든 개별 customerName을 얻으려고합니다.
Soo 명확하지 않습니다. "한 열의 값을 사용하고 마지막 열을 해당 열로 가져 오려고합니다." 한 칼럼 - 우리는 어느 칼럼을 찾아야 만합니다. 마지막 항목을 정의하십시오. – Paparazzi
메신저는 diaryDate를 사용하여 만든 최신 날짜 항목을 가져 와서 해당 고객에 대해 마지막으로 입력 한 항목을 반환하려고합니다. @Blam – GeoffWilson