2012-05-21 120 views
3

我是SQL Server的新手。請幫我解決我的下面的問題。如何結合兩個SELECT語句的結果

我有一個表,如下,

Job Quantity Status 
1  100  OK 
2  400  HOLD 
3  200  HOLD 
4  450  OK 

我想現在這樣,所有的空缺職位,數量等於或大於400,狀態OK將出現第一則的方式編寫查詢Quanitty的職位等於或超過400,狀態爲HOLD。然後出現狀態爲OK且數量小於400的所有作業,然後出現數量小於400且狀態爲HOLD的作業。

下面是我的結果應該如何顯示。 (對不起,以上混淆段落)

Job Quantity Status 
4  450  OK 
2  400  HOLD 
1  100  OK 
3  200  HOLD 

我該怎麼做?有人請幫我

回答

6
SELECT Job, Quantity, Status 
    FROM myTable 
ORDER BY CASE WHEN Quantity >= 400 AND Status = 'OK' THEN 1 
       WHEN Quantity >= 400 AND Status = 'Hold' THEN 2 
       WHEN Status = 'OK' THEN 3 
       ELSE 4 
      END 
+1

看起來他固定它。 – AaronLS

1

這裏有一些稍微不那麼冗長的替代品:

ORDER BY Quantity/400 DESC, 
    CASE [Status] WHEN 'OK' THEN 1 ELSE 2 END; 

這種對待工作與數量> = 800爲更高的優先級。一個更好的選擇可能是:

ORDER BY CASE Quantity/400 WHEN 0 THEN 2 ELSE 1 END, 
    CASE [Status] WHEN 'OK' THEN 1 ELSE 2 END; 

此外,如果OK和HOLD是僅有的兩種可能性[狀態],你可以說:

ORDER BY CASE Quantity/400 WHEN 0 THEN 2 ELSE 1 END, 
    [Status] DESC;