我有一个表,其中包含邮件字段中的大量空值。我需要做的是更新所有的NULL行。对于每一个NULL行,我需要执行一个存储过程,它基本上获取与该用户ID相关的所有电子邮件。因此,对于每个NULL行,调用此存储过程,并且此存储过程中找到的所有电子邮件字段需要连接在一起,并插入到另一个表中的NULL电子邮件字段的位置。将存储过程中的行连接到TSQL中的另一个表上
任何人都知道如何在TSQL中实现这个?
提前感谢
编辑:
我发现这个代码:
WITH Ranked (CategoryId, rnk, ProductName)
AS (SELECT CategoryId,
ROW_NUMBER() OVER(PARTITION BY CategoryId ORDER BY CategoryId),
CAST(ProductName AS VARCHAR(8000))
FROM Northwind..Products),
AnchorRanked (CategoryId, rnk, ProductName)
AS (SELECT CategoryId, rnk, ProductName
FROM Ranked
WHERE rnk = 1),
RecurRanked (CategoryId, rnk, ProductName)
AS (SELECT CategoryId, rnk, ProductName
FROM AnchorRanked
UNION ALL
SELECT Ranked.CategoryId, Ranked.rnk,
RecurRanked.ProductName + ', ' + Ranked.ProductName
FROM Ranked
INNER JOIN RecurRanked
ON Ranked.CategoryId = RecurRanked.CategoryId
AND Ranked.rnk = RecurRanked.rnk + 1)
SELECT CategoryId, MAX(ProductName)
FROM RecurRanked
GROUP BY CategoryId;
但是我不能让它在我的情况下工作。
基本上,而不是使用存储过程,我可以简单地使用select语句获得一行所有必要的电子邮件。我基本上需要做的是将这些返回的邮件连接成一行。
您的存储过程如何返回电子邮件? – Lamak 2012-02-22 13:13:23
我想从这个链接:http://www.projectdmx.com/tsql/rowconcatenate.aspx,但我无法得到它的工作。 @Lamak存储过程只是返回一个包含电子邮件的行列表 – seedg 2012-02-22 13:22:08
它必须是存储过程吗? UDF在这里更加有用,因为它可以在TSQL语句中调用 – 2012-02-22 13:30:29