I'm getting an error that the subquery returns more than one value and I know it does so now I would like to cast that subquery result to a string and then insert that string into the table on the same position
I've already tried with a loop but since I can't use loops anywhere else than outside the query it didn't help much.
That is the query I'm working with
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
And this is the part I need to be casted into a string:
(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)
Result would be a string which is then inserted into the table in the same row as the result of this subquery should be