我需要用 CASE 语句评估一个字段。字段名称是 Commodity 并且是一个 varchar(255)。值不同,我需要在特定字符之后从中提取特定部分。字符是“>”。通过使用以下代码,我能够想出我想要在 > 之后返回的值:
SUBSTRING(Commodity, CHARINDEX('>', Commodity) + 2, LEN(Commodity))
Run Code Online (Sandbox Code Playgroud)
但是,我不确定如何将其应用到我的 CASE 语句中。我需要测试是否为空,然后只为它分配一个“无商品”的值。然后我需要测试 > 的存在,然后实现上面的代码以返回值。然后我需要测试什么时候没有 > 但它不为空并且只返回 Commodity 字段的值。
我没有从下面的查询中获得预期的结果.我期待收回5,262条记录,而我只得到4,279条记录.我知道问题出在WHERE子句中.当我注释掉WHERE子句时,我得到了预期的记录数,但是数量不正确,因为我需要在Type字段上进行过滤.有什么建议?
SELECT
a.Part,
SUM(ISNULL(b.Qty,0)) AS Sales_Qty
FROM
dbo.Parts a
LEFT OUTER JOIN dbo.Sales b ON b.Part = a.Part
WHERE
b.Type = 'O'
GROUP BY
a.Part
ORDER BY
a.Part
Run Code Online (Sandbox Code Playgroud)