我有一个非常简单的表,有企业和一列DisplayBiz = varchar(1)
是Y或N ...我想要一个脚本从数据库中提取数据首先所有的“Y”,然后所有的“N”共十个,我希望他们按商家名称排列。SQL SELECT查询
有没有办法做到这一点?我假定这将是这样的:
SELECT TOP 10 MemberID,
BizName
ORDER BY BizType
但这并不考虑到DisplayBiz列
任何想法?
非常感谢..!
我有一个非常简单的表,有企业和一列DisplayBiz = varchar(1)
是Y或N ...我想要一个脚本从数据库中提取数据首先所有的“Y”,然后所有的“N”共十个,我希望他们按商家名称排列。SQL SELECT查询
有没有办法做到这一点?我假定这将是这样的:
SELECT TOP 10 MemberID,
BizName
ORDER BY BizType
但这并不考虑到DisplayBiz列
任何想法?
非常感谢..!
可以BY子句中的顺序添加多个列:
-- ...
ORDER BY DisplayBiz DESC, BizType
这将使y行,然后再N行。
这将得到显示比例为'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的英文拼写。似乎更加明确。
如果该列总是只有1个字符长 - 使它成为CHAR(1),并为VARCHAR部分节省2个字节的开销(这真的不会在这里发挥作用).... –
+1 @marc_s - 我的pet peeve以及varchar(小于4的任何东西)' – JNK
为什么不使用bit/boolean列呢? –