2010-04-09 3 views
0

Je dois générer un rapport dans lequel l'utilisateur peut choisir Tous les problèmes, les problèmes ouverts ou les problèmes fermés dans un bouton radio. À mon avis, j'ai une colonne bit isClosed. Si je n'ai pas la boîte radio Toutes les questions que je voudrais simplement faire:SQL Where clause attribution conditionnelle basée sur un autre paramètre

SELECT * 
FROM MyView 
WHERE isClosed = @ViewClosedRecords 

Cependant, je dois enlever la condition isClosed = @ViewClosedRecords lorsque le @ViewAllRecords = true. Comment ferais-je cela?

+0

tête Smacks. Apparemment c'est l'un de ces jours. – jamone

Répondre

3
SELECT * 
FROM MyView 
WHERE @ViewAllRecords OR isClosed = @ViewClosedRecords 

Bonté,

Dan

+0

J'essaye ceci et le constructeur de requête indique "Nom de colonne invalide vrai" et alors il change en '(isClosed = @ViewClosedRecords) OU (ProjectID = @RequestedProjectID) ET (vrai = @ViewAllRecords)' mais toujours des erreurs. – jamone

+0

Edité un peu .. essayez à nouveau –

1
select * 
from MyView 
WHERE isClosed = @ViewClosedRecords 
OR @ViewAllRecords 

et de définir les paramètres @ViewAllRecords true lorsque l'utilisateur sélectionne "tous les problèmes" dans le bouton radio.

1
WHERE 
(@ViewAllRecords = false AND isClosed = @ViewClosedRecords) 
OR 
(@ViewAllRecords = true) 
1

Ce qui suit vous donnera toutes les lignes avec isClosed = @ViewClosedRecords. Si @ViewAllRecords = true alors il retournera toutes les lignes et ignorera isClosed.

SELECT * 
FROM MyView 
WHERE isClosed = @ViewClosedRecords 
    OR @ViewAllRecords = true 
+0

pour une raison quelconque, il ne serait pas égal à vrai comme un booléen, mais après je l'ai mis comme une chaîne et a fait = 'vrai' cela fonctionne. – jamone

1
WHERE (@ViewAllRecords <> true AND isClosed = @ViewClosedRecords)