2012-05-11 80 views
3

我有一個聯合查詢可以從兩個不同的人口中獲得計數。我如何強制結果以查詢中寫入的順序返回,而不是按升序/降序排列?帶聯合查詢的結果順序

select count(datediff(yyyy,dob,admitdate) as counts 
from myTable 
where condition 
union 
select count(datediff(yyyy,dob,admitdate) as counts 
from myTable 
where condition 

我想第一個結果始終作爲第一行返回。這可能嗎?

回答

5

您必須使用ORDER BY子句指定訂單。在你的榜樣,你可以這樣做:

SELECT 1 AS seq, COUNT(datediff(yyyy,dob,admitdate) as counts 
    FROM myTable 
WHERE ...condition-1... 
UNION 
SELECT 2 AS seq, COUNT(datediff(yyyy,dob,admitdate) as counts 
    FROM myTable 
WHERE ...condition-2... 
ORDER BY seq 
+0

你打八秒鐘,其他人:)。我會盡快接受它。還有一件事:我注意到你不能像select [row name]那樣命名一行。有沒有任何命名行的方法? – wootscootinboogie

+1

通常,查詢返回多行; COUNT查詢在返回UNION的每個部分中的一行時是不尋常的。 (順便說一句,你的查詢在每個部分都是一樣的 - 好吧,除非我們假設有兩個不同的條件。)沒有辦法'命名'行(當然不是很容易),但添加像這樣的常量的技巧是合理的衆所周知。 –

+0

我是一個sql noob所以這對我來說都很好:) – wootscootinboogie

0
select 1, count(datediff(yyyy,dob,admitdate) as counts 
from myTable 
where condition 
union 
select 2, count(datediff(yyyy,dob,admitdate) as counts 
from myTable 
where condition 
order by 1