Я получаю сообщение об ошибке, что подзапрос возвращает более одного значения, и я знаю, что это так, и теперь я хотел бы привести этот результат подзапроса к строке, а затем вставить эту строку в таблицу в той же позиции
Я уже пробовал с циклом, но поскольку я не могу использовать циклы нигде, кроме как вне запроса, это не сильно помогло.
Это запрос, с которым я работаю
SELECT DISTINCT LiveCampaign_SubscriberList_Email.Email, Firstname, Lastname, dbo.spValueToString(Subscribed) AS Subscribed,
dbo.spValueToString((SELECT COUNT(*)
FROM tblEmailBlackList
WHERE tblEmailBlackList.Email = LiveCampaign_SubscriberList_Email.Email and tblEmailBlackList.PortalID = -2)) As GeneralBlockList,
(SELECT DISTINCT PortalLocalization.PortalName
FROM tblEmailBlackList
LEFT JOIN tblLiveCampaignSettings ON tblLiveCampaignSettings.ModuleID = tblEmailBlackList.ModuleID
LEFT JOIN PortalLocalization ON PortalLocalization.PortalID = tblEmailBlackList.PortalID AND PortalLocalization.CultureCode = 'sl-SI'
LEFT JOIN #tmp ON tblEmailBlackList.Email = #tmp.Email COLLATE Slovenian_CI_AS
WHERE LiveCampaign_SubscriberList_Email.Email = #tmp.Email COLLATE Slovenian_CI_AS
AND tblEmailBlackList.PortalID >= 0 OR tblEmailBlackList.PortalID =- 1)
AS LocalBlockList
FROM LiveCampaign_SubscriberList_Email
И это та часть, которую мне нужно вставить в строку:
(SELECT DISTINCT PortalLocalization.PortalName
FROM tblEmailBlackList
LEFT JOIN tblLiveCampaignSettings ON tblLiveCampaignSettings.ModuleID = tblEmailBlackList.ModuleID
LEFT JOIN PortalLocalization ON PortalLocalization.PortalID = tblEmailBlackList.PortalID AND PortalLocalization.CultureCode = 'sl-SI'
LEFT JOIN #tmp ON tblEmailBlackList.Email = #tmp.Email COLLATE Slovenian_CI_AS
WHERE LiveCampaign_SubscriberList_Email.Email = #tmp.Email COLLATE Slovenian_CI_AS
AND tblEmailBlackList.PortalID >= 0 OR tblEmailBlackList.PortalID =- 1)
Результатом будет строка, которая затем вставляется в таблицу в той же строке, так как результатом этого подзапроса должно быть