Ê×Ò³ Ê«´Ê ×Öµä °å±¨ ¾ä×Ó ÃûÑÔ ÓÑ´ð ÀøÖ¾ ѧУ ÍøÕ¾µØÍ¼
µ±Ç°Î»ÖÃ: Ê×Ò³ > ½Ì³ÌƵµÀ > Êý¾Ý¿â > SQL Server >

Ϊʲôorder byûЧ¹û,¸ÃÈçºÎ´¦Àí

2012-03-25 
Ϊʲôorder byûЧ¹ûselecta,b,c,sum(e)fromtableAgroupbya,b,corderbycasewhen(selectcount(tb.tableBPK

Ϊʲôorder byûЧ¹û
select   a,b,c,sum(e)
from   tableA
group   by   a,b,c
order   by   case   when   (select   count(tb.tableBPK)   from   tableB   as   tb   where   tb.fieldA   =   d)> 2   then   0   else   1   end


tableA±íÓÐn¸ö×Ö¶Î(a,b,c,d....),tableB.fieldAºÍtableA.dÊÇÍ⽨¹ØÏµ
ÏÖÔÚÒªtableBÖгöÏÖ¹ýtableA.d   ´óÓÚ2´ÎµÄÅÅÇ°Ãæ
ÏÖÔÚÓÐÕâ¸öorder   by   ºÍûÓÐorderby¶¼Ã»ÓÐÊ²Ã´Çø±ð
ÒòΪÒÔǰÉè¼ÆÓеãÎÊÌâgroup   by   a,b,c֮ǰµÄ²¿·Ö²»ÔõôºÃ¸Ä,ËùÒÔÖ»Äܶ¯order   by   ºóÃæ²¿·Ö
²¢ÇÒºÍselect   a,b,c   from   tableA   group   by   a,b,c±ØÐëÔÚsqlserver2kÏ¿ÉÒÔÔËÐÐ
ЧÂÊÔÝʱ²»¿¼ÂÇ,·´Õý2¸ö±íÊý¾ÝÒ²²»»á³¬¹ý1wÌõ,1¸öÔÂÒ²¾ÍÅܼ¸´Î

[½â¾ö°ì·¨]
select a,b,c,e from
(select a,b,c,sum(e) e,case when (select count(tb.tableBPK) from tableB as tb where tb.fieldA = d)> 2 then 0 else 1 end ´ÎÊý
from tableA
group by a,b,c) as t
order by t.´ÎÊý desc

ÈȵãÅÅÐÐ
Bad Request.