gpt4 book ai didi

sql-server-2008 - SQL Server 2008 - 避免 foreach 循环

转载 作者:行者123 更新时间:2023-12-04 07:04:56 25 4
gpt4 key购买 nike

我正在拼命避免在 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'

返回这个:

enter image description here

为了计算每个 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

返回这个:

enter image description here

现在我需要将两个表同步在一起,删除@SKU 声明。我认为我无法使用 UNION 来执行此操作,因为第二个函数需要预先了解它将要处理的 SKU ......而 JOIN 需要加入一些东西,而我不需要真的有。是否有一些我不熟悉的功能可以用来在没有循环机制的情况下一次性创建一个完整的 SKU 表?

最佳答案

试试CROSS APPLY ...这将为 BABW_ItemFeed 中的每一行执行您的 UDF:

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

关于sql-server-2008 - SQL Server 2008 - 避免 foreach 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14761061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com