我正在拼命地避免在 SQL Server 2008 中出现 foreach 情况(我的背景是 c#)。
基本上,我有一个 SKU 列表。对于列表中的每个 SKU,我需要执行一些计算以确定该特定 SKU 是否会显示在网络上。
要获取我的 SKU 列表,我使用以下命令:
SELECT Feed.StyleCode as SKU
FROM [eCommerce].[dbo].[BABW_ItemFeed] as Feed
WHERE Feed.ProductDefinition = 'Kit'
返回这个:
为了计算每个 SKU 字段,我一直在使用这个:
DECLARE @SKU AS varchar(50)
SET @SKU= '11993_16559_16227'
SELECT
@SKU as SKU,
0 AS Quantity,
MIN(ISNULL(Sending.IsActive, 'WEBNO')) AS IsActive,
MAX(ISNULL(Sending.IsDiscontinued, 1)) AS IsDiscontinued
FROM
(
SELECT * FROM [eCommerce].[dbo].[Split] (
@SKU
,'_')
) AS SplitSkus
LEFT JOIN #SkusToSend AS Sending
ON Sending.SKU = SplitSkus.items
返回这个:
现在我需要将两个表同步在一起,删除@SKU 声明。我认为我不能使用 UNION 来执行此操作,因为第二个功能需要预先了解它将处理的 SKU……而 JOIN 需要加入一些东西,而我不需要真的有。是否有一些我不熟悉的功能可以在没有循环机制的情况下一次性创建完整的 SKU 表?