Я надеюсь, что некоторые из вас помогут мне в этом. Мои SQL-навыки довольно слабы, и на моей работе выполняется большая работа SSIS, которая сейчас не работает. Он работает отлично в течение 3 лет с тех пор, как я начал без проблем, но за последние 48 часов он провалился дважды. Ошибка заключается в следующем:SQL Subquery вернул более 1 значения, запутанные в дизайне запроса?
Подзапрос возвратил более 1 значения. Это недопустимо, если подзапрос следует за =,! =, <, < =,>,> = или когда подзапрос используется как выражение.
Я подтвердил (насколько могу), что никаких изменений в структуре/дизайне базы данных ничего не было, но, к сожалению, это все, что я могу сделать. В противном случае этот прекрасный вопрос выпадает на меня.
Я понимаю, что ошибка означает, что я получаю несколько записей назад, когда я должен их получить, но это примерно столько, сколько я понимаю.
Поток этого задания выглядит следующим образом: таблица ProvUserDefinedDataRotated отбрасывается каждую ночь, а затем следующий запрос запускается сразу после этого.
SELECT objectinternalid,
FaxComments = Isnull ((SELECT value
FROM provuserdefineddata
WHERE userdefinedfieldinternalid = 75
AND objectinternalid = Q.objectinternalid),
''),
FaxCommentsDate = Isnull ((SELECT value
FROM provuserdefineddata
WHERE userdefinedfieldinternalid = 76
AND objectinternalid =
Q.objectinternalid), ''
),
Specialty = Isnull ((SELECT value
FROM provuserdefineddata
WHERE userdefinedfieldinternalid = 77
AND objectinternalid = Q.objectinternalid),
''),
DepartmentFullDescript = Isnull ((SELECT value
FROM provuserdefineddata
WHERE userdefinedfieldinternalid = 78
AND objectinternalid =
Q.objectinternalid), ''),
Alerts1 = Isnull ((SELECT value
FROM provuserdefineddata
WHERE userdefinedfieldinternalid = 79
AND objectinternalid = Q.objectinternalid), '')
,
ProviderStatus = Isnull ((SELECT value
FROM provuserdefineddata
WHERE userdefinedfieldinternalid = 80
AND objectinternalid =
Q.objectinternalid), ''),
ProviderRole = Isnull ((SELECT value
FROM provuserdefineddata
WHERE userdefinedfieldinternalid = 81
AND objectinternalid =
Q.objectinternalid), ''),
ProfessionalTitle = Isnull ((SELECT value
FROM provuserdefineddata
WHERE userdefinedfieldinternalid = 82
AND objectinternalid =
Q.objectinternalid),
''),
SignatureBlockTitle = Isnull ((SELECT value
FROM provuserdefineddata
WHERE userdefinedfieldinternalid = 96
AND objectinternalid =
Q.objectinternalid), ''),
AlertsUsedWithProfTitles = Isnull ((SELECT value
FROM provuserdefineddata
WHERE userdefinedfieldinternalid =
98
AND objectinternalid =
Q.objectinternalid), ''),
ProfTitleAlertDescrpt = Isnull ((SELECT value
FROM provuserdefineddata
WHERE userdefinedfieldinternalid = 99
AND objectinternalid =
Q.objectinternalid), ''),
ProviderFullFaxNumber = Isnull ((SELECT value
FROM provuserdefineddata
WHERE userdefinedfieldinternalid = 102
AND objectinternalid =
Q.objectinternalid), ''),
NonEsig = Isnull ((SELECT value
FROM provuserdefineddata
WHERE userdefinedfieldinternalid = 112
AND objectinternalid = Q.objectinternalid), '')
,
EsigEWSTrainNotes = Isnull ((SELECT value
FROM provuserdefineddata
WHERE userdefinedfieldinternalid = 146
AND objectinternalid =
Q.objectinternalid),
''),
ESigEWSTrainedDate = Isnull ((SELECT value
FROM provuserdefineddata
WHERE userdefinedfieldinternalid = 147
AND objectinternalid =
Q.objectinternalid),
''),
EPICTrained = Isnull ((SELECT value
FROM provuserdefineddata
WHERE userdefinedfieldinternalid = 163
AND objectinternalid = Q.objectinternalid),
''),
EPICTrainedDate = Isnull ((SELECT value
FROM provuserdefineddata
WHERE userdefinedfieldinternalid = 164
AND objectinternalid =
Q.objectinternalid), ''
)
INTO provuserdefineddatarotated
FROM provuserdefineddata Q
GROUP BY objectinternalid
ORDER BY objectinternalid
Из моего ограниченного понимания, похоже, этот запрос только копирует данные в только что созданный ProvUserDefinedDataRotated таблицы после указанной таблицы отбрасывается?
Я запутался на то, что отдельные высказывания как этот
FaxComments = Isnull ((SELECT value
FROM provuserdefineddata
WHERE userdefinedfieldinternalid = 75
AND objectinternalid = Q.objectinternalid),
''),
на самом деле означает, хотя. Я просто не понимаю, что происходит в этом коде. :(
Любые объяснения по проектированию этого запроса и/или рекомендации о том, как устранить это вообще было бы так оценил. Я яростно прибегая к помощи но безрезультатно.
Спасибо!
Будьте уверены, что тот, кто написал этот SQL, сделал плохую работу и оставил в нем бомбу замедленного действия, которая в конце концов взорвется. –