SQL根据条件为列值添加星号



我使用w3的教程数据库如果ShipperID为2,我需要在ProductName列中添加星号

SELECT Products.ProductName, (Products.Price*OrderDetails.Quantity) AS TotalValue, Orders.OrderDate
FROM ((OrderDetails
INNER JOIN Products ON OrderDetails.ProductID = Products.ProductID)
INNER JOIN Orders ON OrderDetails.OrderID = Orders.OrderID)
WHERE OrderDetails.ProductID IN (19,20,21,68)
AND Orders.OrderDate <= #12/31/1996#;

在测试查询的链接中,CASE操作符不能在该链接上工作,因为我需要这样的CASE Orders.ShipperID = 2 THEN Products.ProductName + '*' ELSE Products.ProductName

下面的错误结果:

发生未指定的错误。

我怎样才能做到这一点?

我不知道你想用这些磅符号(#)在日期周围实现什么,所以我删除了该条款。但这里是如何使用CASE语句,并在SQL中添加||字符串,我认为这是你卡住的地方:

SELECT 
CASE WHEN Orders.ShipperId = 2 THEN Products.ProductName || '*'
ELSE Products.ProductName
end as PRODNAME,
(Products.Price*OrderDetails.Quantity) AS TotalValue, Orders.OrderDate, Orders.ShipperID
FROM ((OrderDetails
INNER JOIN Products ON OrderDetails.ProductID = Products.ProductID)
INNER JOIN Orders ON OrderDetails.OrderID = Orders.OrderID)
WHERE OrderDetails.ProductID IN (19,20,21,68);

请注意,它是Orders.ShipperID,而不是Orders.SupplierID,这是你在CASE语句中试图使用的。

你也可以做一些稍微不同的附加,像这样:

SELECT Products.ProductName ||
CASE
WHEN Orders.ShipperId = 2 THEN  '*'
ELSE ''
END as PRODNAME ...

同样,你不需要那么多括号,但是我把它们留在里面了。如果你没有理由使用它们(个人风格?),我建议消除它们。

相关内容

  • 没有找到相关文章

最新更新