我是一个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)。你现在应该有足够的代表去做。 –