2015-11-06 96 views
-1

我有一个情况下,有我要选择基于行的状态cloumn先决选择行 - SQL

首先先决应Customer_Status与“已删除”状态

其次应该优先Family_Status与价值“删除” [与Family_Status选择顶层1 = '删除']

如果所有Family_Status是“开放的”,然后选择顶部1 Family_Status = '打开'

案例:1

​​

在这种情况下,我需要导致作为

 
CustomerID FamilyId Name   Customer_Status  Family_Status 
-------  -------- --------- ---------------  ----------- 
1000   101   Vk   Open    Open 

情况2

 
CustomerID FamilyId Name   Customer_Status  Family_Status 
-------     --------- ---------------  ------------ 
1000   101   Vk   Open    Open 
1000   102   vk   Deleted   Open 
1000   103   vk   Open    Open 

在这种情况下,我需要导致作为

 
CustomerID FamilyId Name   Customer_Status  Family_Status 
-------     --------- ---------------  ------------ 
1000   102   vk   Deleted   Open 

案例:3

 
CustomerID FamilyId Name   Customer_Status  Family_Status 
-------     --------- ---------------  ------------ 
1000   101   Vk   Deleted   Open 
1000   102   vk   Deleted   Open 
1000   103   vk   Deleted   Open 

输出:

 
CustomerID FamilyId Name   Customer_Status  Family_Status 
-------     --------- ---------------  ------------ 
1000   101   Vk   Deleted   Open 

案例:4

 
CustomerID FamilyId Name   Customer_Status  Family_Status 
-------     --------- ---------------  ------------ 
1000   101   Vk   Open    Deleted 
1000   102   vk   Open    Deleted 
1000   103   vk   Open    Deleted 

在这种情况下,我需要得到作为

 
CustomerID FamilyId Name   Customer_Status  Family_Status 
-------     --------- ---------------  --------- 
1000   101   Vk   Open    Deleted 

任何人都可以在此查询

回答

1

公正的秩序的帮助结果集:

SELECT TOP (1) * 
FROM MyTable 
ORDER BY Customer_Status, Family_Status DESC 
+0

在此它如何处理与优先地位“已删除” – vmb

+0

我会尝试这个 – vmb

+0

订货时'D'到来之前'O'所以'Deleted'将前'Open'订购。 –