Mam zapytanie, w tym jest wiele warunków opartych na parametrze
select a,b,c,d from xyz where
case p='Closed' then (q-r)=0
case p='Pending' then (q - isnull(r,0) )>0
case P='All' then all records to be display
Podaje niepoprawną składnię przy wielkości liter w wierszu
Uprzejmie zasugeruj mi jakiekolwiek inne rozwiązanie, aby zmienić „gdzie warunek” w zależności od wartości parametru
ponieważ w danym sql warunek „where” zależy od wartości parametru p.
Możesz zobaczyć w podanej składni, jeśli wartością parametru jest zmiana, warunek również zostanie zmieniony.
W pierwszym przypadku, jeśli p = „Zamknięty”, to select ... where q-isnull(r,0)=0
jeśli p = „Oczekuje”, to select ... where (q - isnull(r,0) )>0
W pierwszym stanie porównuje warunek „równy” , aw następnym przykładzie jest „większy od” wartości zerowej.
jak w trzecim warunku chcę wyświetlić wszystkie rekordy.
Problem polega na tym, że struktura „case” zwraca tylko wartość, a nie wyrażenie.