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