我是一個SQL新手,但需要更新此查詢包括以下字段「NULL」結果:包括空在MS SQL查詢結果
DrCity
DrST
PhoneOffice
SmnrDate
SmnrID
我需要什麼,以獲得做「 NULL'結果爲這些字段。現在,查詢排除了至少SmnrDate和SmnrID的NULL結果。
謝謝。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Report_ActiveClients_ByConsultant]
@EmpID varchar(10)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT
EmpID
, LastName
, FirstName
, DrCity
, DrST
, PhoneOffice
, [Status]
, Seminar.SmnrName
, CONVERT(varchar(10), Smnr.SmnrDate, 101) AS SeminarDate
FROM (SELECT EmpID
, Contact.ContactID
, LastName
, FirstName
, DrCity
, DrST
, PhoneOffice
, [Status]
, MAX(SmnrDate) AS SmnrDate
FROM Consultant INNER JOIN Contact ON Consultant.EmpID = Contact.Consultant1
INNER JOIN ContactNameLink ON Contact.ContactID = ContactNameLink.lnkContactID
INNER JOIN ContactName ON ContactNameLink.lnkNameID = ContactName.NameID
LEFT JOIN SmnrAttnDetail ON Contact.ContactID = SmnrAttnDetail.ContactID
LEFT JOIN Seminar ON SmnrAttnDetail.SmnrID = Seminar.SmnrID
WHERE ((@EmpID = '' AND Consultant.Active='1') OR Consultant.EmpID = @EmpID)
AND Contact.Active='Yes'
AND Contact.ContactType='Client'
AND (Contact.[Status] = 'ACS'
OR Contact.[Status] = 'AC'
OR Contact.[Status] = 'BC'
OR Contact.[Status] = 'QS'
OR Contact.[Status] = 'SAT'
OR Contact.[Status] = 'LC'
OR Contact.[Status] = 'AS')
AND ContactNameLink.[Primary] = 1
GROUP BY EmpID, Contact.ContactID, LastName, FirstName, DrCity, DrST, PhoneOffice, [Status]) AS Smnr
LEFT JOIN SmnrAttnDetail ON SmnrAttnDetail.ContactID = Smnr.ContactID
INNER JOIN Seminar ON SmnrAttnDetail.SmnrID = Seminar.SmnrID AND Seminar.SmnrDate = Smnr.SmnrDate
GROUP BY EmpID, Smnr.ContactID, LastName, FirstName, DrCity, DrST, PhoneOffice, [Status], Seminar.SmnrName, Smnr.SmnrDate
ORDER BY EmpID, LastName
END
最終代碼:
SELECT dbo.StatusCode.Code, dbo.Contact.ContactType, dbo.Contact.Active, dbo.Contact.Status, dbo.ContactName.Title, dbo.ContactName.FirstName,
dbo.ContactName.LastName, dbo.Contact.Addr1, dbo.Contact.City AS DrCity, dbo.Contact.ST AS DrST, dbo.Contact.PhoneClinic AS PhoneOffice, dbo.Contact.DateJoined,
dbo.Contact.Consultant1 AS EmpID, ISNULL(CONVERT(varchar(10), dbo.qyLastSmnrActiveReport.LastSmnr, 101),'None') AS SeminarDate, dbo.qyLastSmnrActiveReport.SmnrName
FROM dbo.Contact INNER JOIN
dbo.StatusCode ON dbo.Contact.Status = dbo.StatusCode.Code INNER JOIN
dbo.ContactNameLink ON dbo.Contact.ContactID = dbo.ContactNameLink.lnkContactID INNER JOIN
dbo.Consultant ON Contact.Consultant1 = Consultant.EmpID INNER JOIN
dbo.ContactName ON dbo.ContactNameLink.lnkNameID = dbo.ContactName.NameID LEFT OUTER JOIN
dbo.qyLastSmnrActiveReport ON dbo.Contact.ContactID = dbo.qyLastSmnrActiveReport.ContactID
WHERE (dbo.Contact.Active = N'Yes') AND (dbo.Contact.Status IN (N'AC', N'QS', N'BC', N'LS', N'ACS', N'SAT', N'ACS', N'AS')) AND (dbo.Contact.ContactType = N'CLIENT') AND
(dbo.ContactNameLink.[Primary] = 1) AND ((@EmpID = '' AND dbo.Consultant.Active='1') OR Consultant1 = @EmpID)
ORDER BY EmpID, LastName, FirstName
嘗試改變外部查詢的'INNER JOIN研討會...'到外部聯接:' LEFT JOIN研討會...' – Parfait
而不是編輯T.他對答案提出質疑,在StackOverflow上添加解決方案作爲答案是一種更好的做法。請參閱[我可以回答我自己的問題嗎?](http://stackoverflow.com/help/self-answer)。你現在應該有足夠的代表去做。 –