gpt4 book ai didi

sql-server-2008 - 需要一个 SQL Server 2008 case 语句来评估一个表并返回两个值

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

我是一个新手 SQL 程序员,整个上午都在反对这个问题,所以请耐心等待。我的情况是这样的:我有一张需要发送到我们电子商务网站的 SKU 表。这些 SKU 中的每一个都有一个“数量”、一个“事件”值和一个“停产”值。当我们一次处理一个 SKU 时,这很容易处理,但现在我必须发送包含一个或多个 SKU 的套件。

例如,如果我的套件 ID 是 000920_001449_001718_999999(四个 SKU 的组合),我需要为整个 SKU 集收集数据,如下所示:

Result of query

这是我需要合并的逻辑:

  • 如果任何 SKU 将 null 或 WEBNO 作为 IsActive 值,则整个套件必须返回 WEBNO。否则,返回WEBYES。
  • 如果任何 SKU 的 IsDiscontinued 值为 null 或“1”,则整个套件必须返回 IsDiscontinued = '1'。否则,返回 0。

  • 我的代码有点乱,但这是我到目前为止所管理的:
    SELECT
    CASE WHEN 'WEBNO' in
    (
    SELECT IsActive
    FROM #SkusToSend as Sending
    RIGHT JOIN
    (
    SELECT * FROM [eCommerce].[dbo].[Split] (
    '000920_001449_001718_999999'
    ,'_')
    ) as SplitSkus
    on Sending.SKU = SplitSkus.items
    ) THEN 'WEBNO'
    ELSE 'WEBYES'
    END

    我的问题是:是否可以编写一个语句来解析我的示例表,只返回一行“IsActive”和“IsDiscontinued”?我试过在这些字段上使用 GROUP BY 和 HAVING 语句,但总是返回多行。

    我的代码处理 WEBNO 值,但不是 NULL,甚至还没有开始考虑 IsDiscontinued 字段。是否有一种简洁的方法可以将其解析在一起,或者有更好的方法来处理此类问题?

    最佳答案

    我想组合ISNULLMIN/MAX应该做的伎俩:

    SELECT
    MIN(ISNULL(sending.IsActive, 'WEBNO')) AS IsActive,
    MAX(ISNULL(sending.IsDiscontinuted, 1)) AS IsDiscontinuted
    FROM
    (
    SELECT * FROM [eCommerce].[dbo].[Split] (
    '000920_001449_001718_999999'
    ,'_')
    ) AS SplitSkus
    LEFT JOIN #SkusToSend AS Sending
    AS Sending.SKU = SplitSkus.items

    关于sql-server-2008 - 需要一个 SQL Server 2008 case 语句来评估一个表并返回两个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14759099/

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