2011-08-23 125 views
-1

我有一個非常簡單的表,有企業和一列DisplayBiz = varchar(1)是Y或N ...我想要一個腳本從數據庫中提取數據首先所有的「Y」,然後所有的「N」共十個,我希望他們按商家名稱排列。SQL SELECT查詢

有沒有辦法做到這一點?我假定這將是這樣的:

SELECT TOP 10 MemberID, 
BizName 
ORDER BY BizType 

但這並不考慮到DisplayBiz列

任何想法?

非常感謝..!

+4

如果該列總是隻有1個字符長 - 使它成爲CHAR(1),併爲VARCHAR部分節省2個字節的開銷(這真的不會在這裏發揮作用).... –

+3

+1 @marc_s - 我的pet peeve以及varchar(小於4的任何東西)' – JNK

+0

爲什麼不使用bit/boolean列呢? –

回答

3

可以BY子句中的順序添加多個列:

-- ... 
ORDER BY DisplayBiz DESC, BizType 

這將使y行,然後再N行。

2

這將得到顯示比例爲'Y'的前10個按字母順序排列的BizNames。如果有小於10,它將以重新開始對那些「N」 ......

SELECT TOP 10 MemberID, BizName, DisplayBiz 
    FROM dbo.table 
    ORDER BY 
     CASE WHEN DisplayBiz = 'Y' THEN 1 ELSE 2 END, 
     BizName; 

您還可以使用:

ORDER BY 
    DisplayBiz DESC, 
    BizName; 

但我更喜歡CASE - 而更多的代碼,你沒有利用Y/N的英文拼寫。似乎更加明確。