I'm using SQL Server 2008 R2 Express in my test environment and the full version in production. I have written a select statement that finds all the records I want to update. About 1200 of them. It Joins multiple tables and the selection is based on multiple fields.
What I want is to do is turn this into an update statement where all matching records have the same filed updated i.e. dFinalised is set to '2015-01-14 00:00:00.000'
I receive the following error when I run my update query
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
I expect I'm going to have to nest this somehow but I can't find a simple enough example to follow.
Thanks in advance David
The select statement is fairly simple
SELECT lMeetingRegisterID
,sPlanNumber
,sName
,sDescription
,dMeeting
,sMeetingTime
,bManaged
FROM [Strata].[dbo].[MeetingRegister]
inner Join MeetingType on MeetingRegister.lMeetingTypeID = meetingtype.lMeetingTypeID
inner Join OwnersCorporation on MeetingRegister.lOwnersCorporationID = OwnersCorporation.lOwnersCorporationID
inner Join tbluser on OwnersCorporation.lUserID = tblUser.lUserID
WHERE dFinalised = '1900-01-01 00:00:00.000'
AND dMeeting < '2014-07-01 00:00:00.000'
AND bManaged != 'N'
Here is my attempt at the update query.
Update dbo.MeetingRegister
set dFinalised = '2015-01-14 00:00:00.000'
from dbo.MeetingRegister
inner Join MeetingType on MeetingRegister.lMeetingTypeID = meetingtype.lMeetingTypeID
inner Join OwnersCorporation on MeetingRegister.lOwnersCorporationID = OwnersCorporation.lOwnersCorporationID
inner Join tbluser on OwnersCorporation.lUserID = tblUser.lUserID
Where dFinalised = '1900-01-01 00:00:00.000'
AND dMeeting < '2014-07-01 00:00:00.000'
AND bManaged = 'N'
Try table expression
WITH C AS (
SELECT lMeetingRegisterID
,sPlanNumber
,sName
,sDescription
,dMeeting
,sMeetingTime
,bManaged
,dFinalised
FROM [Strata].[dbo].[MeetingRegister]
inner Join MeetingType on MeetingRegister.lMeetingTypeID = meetingtype.lMeetingTypeID
inner Join OwnersCorporation on MeetingRegister.lOwnersCorporationID = OwnersCorporation.lOwnersCorporationID
inner Join tbluser on OwnersCorporation.lUserID = tblUser.lUserID
WHERE dFinalised = '1900-01-01 00:00:00.000'
AND dMeeting < '2014-07-01 00:00:00.000'
AND bManaged != 'N'
)
Update C
set dFinalised = '2015-01-14 00:00:00.000'