2012-05-04 84 views
0

我正在構建一份委託報告,如果它們存在於訂單中,需要包含自定義運費。下面我加入了兩張桌子。如果OrderDetails.Custom包含'Freight''Overnight'我需要它來顯示'OrderDetails.CustomPrice'初學SQL語句

如果OrderDetails.Custom不包含'Freight''Overnight'我需要離開OrderDetails.CustomPrice空白,但仍然只要WHERE子句滿足顯示所有其他領域。

任何幫助,非常感謝!


SELECT Orders.OrderDate, Orders.OrderID,  Orders.PaymentAmount, 
     Orders.Shipping, OrderDetails.Custom, OrderDetails.CustomPrice 
FROM Orders 
    JOIN OrderDetails 
    ON OrderDetails.OrderID = Orders.OrderID 
WHERE OrderDate BETWEEN '04/01/12 00:00:01' 
        AND '04/30/12 11:59:59' 
    AND SalesRep_CustomerID = '21140'; 

回答

2

你可以達到你想要一個case語句什麼值:

SELECT Orders.OrderDate, Orders.OrderID, Orders.PaymentAmount, Orders.Shipping, 
CASE WHEN (OrderDetails.Custom = 'Freight' OR OrderDetails.Custom = 'Overnight') THEN OrderDetails.CustomPrice ELSE '' END AS CustomPrice, 
OrderDetails.CustomPrice 
FROM Orders 
JOIN OrderDetails ON OrderDetails.OrderID = Orders.OrderID 
WHERE OrderDate BETWEEN '04/01/12 00:00:01' AND '04/30/12 11:59:59' and SalesRep_CustomerID = '21140'; 
+0

這個格式:''04/01/12 00:00:01''的日期是一個麻煩的廣告。 –

+0

是的,我沒有看過where子句。 – aleroot

+0

謝謝!那樣做了。現在我剛剛意識到我出於某種原因在Orders.OrderID上獲得了重複。有什麼方法可以合併輸出? – DonkeyKong

0

使用case語句以獲取列 「CustomPrice」