Sql server sql中如何按特例排序

Sql server sql中如何按特例排序,sql-server,Sql Server,我有这个案子 我有一个存储过程,可以将所有人作为男女夫妇 我想把这对夫妇按男性名字分类 我试着唱一些这样的歌 SELECT P.GenderTypeID, Couple.CoupleID, P.PersonID , p.NameAr, p.NameEn , p.Mobile FROM t

我有这个案子 我有一个存储过程,可以将所有人作为男女夫妇 我想把这对夫妇按男性名字分类 我试着唱一些这样的歌

SELECT          P.GenderTypeID, 
                Couple.CoupleID, 
                P.PersonID , 
                p.NameAr, 
                p.NameEn , 
                p.Mobile 
FROM            tbl_Couples Couple 
LEFT OUTER JOIN tbl_Persons P 
ON              P.CoupleID = Couple.CoupleID 
ORDER BY 
                CASE WHEN P.GenderTypeID = 1 
                THEN '1'--Male 
                WHEN P.GenderTypeID = 2 
                THEN '2'--Female 
                ELSE  P.GenderTypeID END ASC , 
                p.NameAr 
把它放在男性的前面,然后是女性

我明白了

GenderTypeID CoupleID PersonID NameAr  NameEn  Mobile
1              3       10       أحمد    Ali     01255678668
1              5       15        سمير   Samier  01255353563
1              4       17        سيد    Said    012359989744
2              5       14      سامية    Samia   01156786868
2              4       16       سعاد    Suadd   01353563563
2              3       12        منى    Mona    010264646444
让我期待

GenderTypeID CoupleID PersonID NameAr  NameEn  Mobile
1              3       10       أحمد    Ali     01255678668
2              3       12        منى    Mona    010264646444
1              5       15        سمير   Samier  01255353563
2              5       14      سامية    Samia   01156786868
1              4       17        سيد    Said    012359989744
2              4       16       سعاد    Suadd   01353563563

您不需要在ORDERBY子句中使用任何case语句,只需使用

SELECT          P.GenderTypeID, 
            Couple.CoupleID, 
            P.PersonID , 
            p.NameAr, 
            p.NameEn , 
            p.Mobile 
FROM            tbl_Couples Couple 
LEFT OUTER JOIN tbl_Persons P 
ON              P.CoupleID = Couple.CoupleID 
ORDER BY P.GenderTypeID, p.NameAr
或者,如果您想按耦合器ID订购记录,只需按更改订单即可

ORDER BY Couple.CoupleID, p.NameAr

您不需要在ORDERBY子句中使用任何case语句,只需使用

SELECT          P.GenderTypeID, 
            Couple.CoupleID, 
            P.PersonID , 
            p.NameAr, 
            p.NameEn , 
            p.Mobile 
FROM            tbl_Couples Couple 
LEFT OUTER JOIN tbl_Persons P 
ON              P.CoupleID = Couple.CoupleID 
ORDER BY P.GenderTypeID, p.NameAr
或者,如果您想按耦合器ID订购记录,只需按更改订单即可

ORDER BY Couple.CoupleID, p.NameAr

使用CTE首先只选择男性,然后将其与tbl_夫妇和tbl_人员表合并,这将给出一个结果集,其中夫妇的男性部分在“男性”CTE中重复


除了CTE,您还可以使用内联视图:将主选择中的“tbl_MaleOnly”替换为括号中的CTE select。

使用CTE首先只选择男性,然后将其与tbl_夫妇和tbl_人员表连接,这将给出一个结果集,其中夫妇的男性部分与“男性”重复CTE


除了CTE,您还可以使用内联视图:将主选择中的“tbl_MaleOnly”替换为括号中的CTE select。

为什么不
按CoupleID DESC,GenderTypeID
?@Raj排序,因为CoupleID标识可能是我们与id=1I的字符(a,أ)存在耦合。我假设您想
对耦合排序,先公后母。是这样吗?如果是这样的话,我们需要更多的数据来帮助您。@Raj我更新了数据,为什么您不按CoupleID DESC,GenderTypeID排序?@Raj因为CoupleID标识可能是我们有一对id=1的字符(A,أ),我假设您想按coupleds排序,先是男性,然后是女性。是这样吗?如果是这样,我们需要更多的数据来帮助您。@Raj我会更新数据