我想加入3個表並刪除第2個和第3個表中由於連接而導致記錄不匹配的空值。我得到的結果,但無法刪除空,因此,當我把這個查詢到SSRS我失去了一個記錄。在SQL Server中加入3個表並刪除第2個和第3個表中的空值
這是我的3張桌子,結果我得到了。
表A
表B
表C
目前的結果是什麼我得到與下面的查詢
我的查詢如下:從我得到上述結果爲藍色。
SELECT
d.ProviderName, d.Service, d.ClientName, d.[StartDate&Time],
d.Duration, d.Status, d.VisitTyoe,
i.IndirectType, i.IndirectScheduleStart, i.IndirectStatus, i.IndirectDuration,
e.[Date], e.[SubProgram], e.[ApprovedMileage],
e.[Status], e.[TravelTime], e.[StipendsTravelTime]
FROM
V_DirectDetails d
FULL OUTER JOIN
V_IndirectDetails i ON d.ProviderName = i.ProviderName
AND d.[StartDate&Time] = i.IndirectScheduleStart
FULL OUTER JOIN
[dbo].[V_ExpenseDetails] e ON d.ProviderName = e.ProviderName
AND d.[StartDate&Time] = e.[Date]
當我試圖把這個SSRS報告中,以下查詢作爲存儲過程,我失去了最後一行。
這裏是SSRS存儲過程的查詢:
@Office NVARCHAR(4000),
@Servicetype NVARCHAR(4000),
@Start DATETIME,
@End DATETIME,
@employee nvarchar(400)
SELECT
d.ProviderName, d.Service as DirectServices, d.ClientName,
d.[StartDate&Time] as "DirectStartDate&Time", d.Duration as DirectDuration,
d.Status as DirectStatus, d.VisitTyoe as DirectVisittype,
i.IndirectType as IndirectVisitType, i.IndirectScheduleStart as "IndirectStartDate&Time",
i.IndirectStatus as IndirectStatus, i.IndirectDuration as IndirectDuration,
e.[Date] as "TravelDate&Time", e.[SubProgram], e.[ApprovedMileage],
e.[Status] as TravelTimeStatus, e.[TravelTime], e.[StipendsTravelTime]
FROM
V_DirectDetails d
FULL OUTER JOIN
V_IndirectDetails i ON d.ProviderName = i.ProviderName
AND d.[StartDate&Time] = i.IndirectScheduleStart
FULL OUTER JOIN
[dbo].[V_ExpenseDetails] e ON d.ProviderName = e.ProviderName
AND d.[StartDate&Time] = e.[Date]
WHERE
CAST(d.[StartDate&Time] AS DATE) BETWEEN '2016-07-28' AND '2016-07-29'
AND d.[siteidname] = 'CountrySide'
AND d.title = 'Painter'
AND d.ProviderName = 'Peter A'
ORDER BY
d.ProviderName
下面是我通過SSRS查詢得到:
我預期的結果是把表A,B,C因爲表A有6,表B有4,表C有3行,所以並排重複提供程序的名稱並在表B的最後2行中顯示空/空,並在表C的最後3行中顯示空值。
請指導,如果可以的話。
感謝您的編輯。下次我會確定這些變化。 – user2040021