2010-08-12 8 views
0

J'essaye de créer une vue qui tire un enregistrement particulier. Le problème que je rencontre est qu'il y a 2 enregistrements à choisir et un drapeau d'état qui est 1 ou 2. Il devrait tirer l'enregistrement 1 s'il existe, et sinon l'enregistrement 2.Sélection conditionnelle SQL View

Est-ce possible à partir d'une vue?

+0

Pouvez-vous fournir le schéma de la table? – Faiz

Répondre

3

essayer le tri par valeur d'état ou d'un groupe et retourner le min

0

traction select top 1 et l'ordre par l'indicateur d'état.

+0

Ajout de la balise, mais il s'agit de SQL Server 2005. –

0
Select B.* 
FROM 
    (Select 
     ID 
     ,MIN(Flag) Flag 
    From TableName 
    Group by ID) A 
    LEFT JOIN TableName B on A.ID=B.ID and A.Flag=B.Flag 
0
select * from table 
where Status = 1 

union 

select * from table t 
where status = 2 
    and not exists (select * from table t2 where t.id = t2.id and Status = 1) 

Notez que cette approche fonctionne mieux lorsque vous avez une colonne id à comparer. C'est une saveur différente de ce que Faiz a écrit.