2014-10-22 82 views
0

你好,我在SQL Server很新,我的家庭工作有一個問題,這是我的工作,這是我在家庭工作的最後一個問題,出於某種原因,我在最後一個問題上掙扎着。聯盟聲明加入同一表中的兩列

的問題是這樣的:

使用UNION運算符來產生一個結果集由來自Orders表三列: 包含交運或不發貨 的OrderID值ShipStatus計算列OrderID列 OrderDate OrderDate列 如果訂單在ShipDate列中具有值,則ShipStatus列應包含SHIPPED值。否則,它應該包含NOT SHIPPED的值。 對由OrderDate設置的最終結果集進行排序。

這是我到目前爲止,但它似乎並沒有工作。

SELECT OrderID,OrderDate FROM Orders UNION SELECT ShipDate AS ShipStatus FROM Orders IF ShipDate IS NULL THEN ShipDate = 'Not Shipped' ELSE ShipDate = 'Shipped'

我不想確切的答案,因爲我想弄明白,但在正確的方向輕推將不勝感激!

更新---------

嘿傢伙感謝您的幫助! 與大家的幫助我想出了它。

這是最後工作的代碼。聯盟內

SELECT OrderID, OrderDate, 'SHIPPED' AS ShipStatus FROM Orders WHERE ShipDate IS NOT NULL UNION SELECT OrderID, OrderDate, 'NOT SHIPPED' AS ShipStatus FROM Orders WHERE ShipDate IS NULL;

回答

0

僅供參考SELECT語句必須具有相同的列數。這些列也必須具有相似的數據類型。另外,每個SELECT語句中的列必須以相同的順序排列。

所以我想你需要的東西lyk這個。但我dono什麼是在這裏工會的使用!

SELECT orderid, 
     orderdate, 
     case 
      when shipdate IS NULL THEN shipdate = 'Not Shipped' 
      ELSE 'shipped' 
     END shipstatus 
FROM orders 
ORDER BY orderdate 
0

在select語句中沒有。您只能在全局聲明中使用。像

if (condition) 
begin 

select statement *** 

end 

你想要做的是where子句。

聯合加入兩個選擇不同的值只。哪些將適用於shiped而不是shiped價值。

所以,你先爲Shiped做第一個表,然後再爲Not Shiped做第二個表,然後將這兩個表與聯合組合起來。

6

您正在努力滿足聯合中的每個查詢需要具有相同數量的列。這裏有一點SQL(MySQL語法)可以幫助你克服這個障礙。現在,你對我的查詢做了這些更正,這裏是解決訂購問題:

SELECT OrderID, OrderDate, ShippedStatus FROM 
(
    SELECT OrderID, OrderDate, 'SHIPPED' as ShippedStatus 
    FROM Orders 
    WHERE ShipDate IS NOT NULL 
    UNION 
    SELECT OrderID, OrderDate, 'NOT SHIPPED' 
    FROM Orders 
    WHERE ShipDate IS NULL 
) AS myQuery ORDER BY OrderDate; 
+0

嗯,我修改它看起來像這樣。 'SELECT並按ShipDate AS ShipStatus,訂單ID,訂購日期 FROM訂單 WHERE並按ShipDate IS NOT NULL = '發貨' UNION SELECT並按ShipDate AS ShipStatus,訂單ID,訂購日期 FROM訂單 WHERE並按ShipDate IS NULL = '不發貨';' 我需要的是列OrderID,OrderDate,然後我需要另一列表示OrderStatus,如果值是NULL,那麼它應該說NOT SHIPPED,如果該值不是NULL,那麼它需要輸出爲SHIPPED。 我得到的NULL的方式或不空值如果從ShipDate列 – jfritts6524 2014-10-22 02:30:37

+0

我終於明白了。 此代碼最終輸出了我正在尋找的結果。 '選擇的OrderID,訂購日期, '已裝船' AS ShipStatus 從接單 WHERE UNION SELECT訂單ID,訂購日期, '不發貨' AS ShipStatus 從接單 WHERE並按ShipDate IS NULL並按ShipDate IS NOT NULL;' – jfritts6524 2014-10-22 02:44:18