Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 SQL Server 2008-避免foreach循环_Sql Server 2008 - Fatal编程技术网

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

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字段,我一

我正在拼命避免在SQLServer2008中出现任何情况(我的背景是c#)

基本上,我有一个SKU列表。对于列表中的每个SKU,我需要执行一些计算,以确定该特定SKU是否将显示在web上

要获取我的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

在第一次尝试时效果很好。非常感谢。