Sql server 2008 SQL Server 2008-避免foreach循环
我正在拼命避免在SQLServer2008中出现任何情况(我的背景是c#) 基本上,我有一个SKU列表。对于列表中的每个SKU,我需要执行一些计算,以确定该特定SKU是否将显示在web上 要获取我的SKU列表,我使用以下命令:Sql server 2008 SQL Server 2008-避免foreach循环,sql-server-2008,Sql Server 2008,我正在拼命避免在SQLServer2008中出现任何情况(我的背景是c#) 基本上,我有一个SKU列表。对于列表中的每个SKU,我需要执行一些计算,以确定该特定SKU是否将显示在web上 要获取我的SKU列表,我使用以下命令: SELECT Feed.StyleCode as SKU FROM [eCommerce].[dbo].[BABW_ItemFeed] as Feed WHERE Feed.ProductDefinition = 'Kit' 退回此邮件: 为了计算每个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声明。我不认为我能够使用联合来实现这一点,因为第二个函数需要预先了解它将要处理的SKU。。。加入需要加入一些东西,但我没有。是否有一些我不熟悉的函数可以用来一次性创建完整的SKU表,而无需循环机制?停止使用Min()和Max()…或者,拉取SKU(不要使用SELECT中的参数)
试试这个:
SELECT
SKU,
0 AS Quantity,
MIN(ISNULL(Sending.IsActive, 'WEBNO')) AS IsActive,
MAX(ISNULL(Sending.IsDiscontinued, 1)) AS IsDiscontinued
FROM
(
SELECT [eCommerce].[dbo].[Split] (Feed.StyleCode,'_') as SKU
FROM [eCommerce].[dbo].[BABW_ItemFeed] as Feed
WHERE Feed.ProductDefinition = 'Kit'
) AS SplitSkus
LEFT JOIN #SkusToSend AS Sending
ON Sending.SKU = SplitSkus.items
试试。。。它将为BABW\u ItemFeed
中的每一行执行您的自定义项:
SELECT
Feed.StyleCode as SKU,
COUNT(*) AS Quantity,
MIN(ISNULL(Sending.IsActive, 'WEBNO')) AS IsActive,
MAX(ISNULL(Sending.IsDiscontinued, 1)) AS IsDiscontinued
FROM
[eCommerce].[dbo].[BABW_ItemFeed] as Feed
CROSS APPLY [eCommerce].[dbo].[Split] (Feed.StyleCode, '_') AS SplitSkus
LEFT JOIN #SkusToSend AS Sending
ON Sending.SKU = SplitSkus.items
WHERE
Feed.ProductDefinition = 'Kit'
GROUP BY
Feed.StyleCode
在第一次尝试时效果很好。非常感谢。