µ±Ç°Î»Ö㺠´úÂëÃÔ >> Sql Server >> Ϊʲôorder byûЧ¹û,¸ÃÈçºÎ´¦Àí
  Ïêϸ½â¾ö·½°¸

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

Èȶȣº67   ·¢²¼Ê±¼ä£º2016-04-27 16:09:56.0
Ϊʲô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
  Ïà¹Ø½â¾ö·½°¸