Wybór danych do wyświetlania

0

Witam.

Jestem początkujący w SQL. Mam problem tzn. mam tabele, w której są jakieś dane oraz kolumna "KOSZT" muszę napisać skrypt SQL, który za pomocą podawanego parametru np. podajemy '0' -> będzie wybierał dane które mają koszt równy 0 a jeśli podamy coś innego to wyfiltruje wszystkie dane, które mają koszt większy niż 0. Próbowałem to w CASE:

CASE WHEN '&koszt'='0' THEN (SELECT * FROM tabela where koszt = 0)  ELSE (SELECT * FROM tabela where koszt >0) end

lecz zwraca mi to błąd:

ORA-01427: jednowierszowe podzapytanie zwraca więcej niż jeden wiersz

Jakim innym sposobem można coś takiego osiągnąć?

0

Selekt * to zwróci dużo pasujących danych
select pole1, pole2, pole3, Case when Pole1=0 then pole2 else pole3 end AS [MOJA_NAZWA_POLA] FROM TABELA

Jak chcesz w case użyć select to z TOP1 albo z innymi warunkami powodującymi ze wynik będzie zwracany ale tylko jeden
Tak przynajmniej działa w MSSQL

0

W CASE musisz zwracać za pomocą podzapytania tylko jedną wartość.

IF koszt=0 THEn
SELECT...
ELSE
SELECT...
1

ech specjaliści...

SELECT * FROM tabela WHERE '&koszt'='0' and koszt = 0 or '&koszt'<>'0' and koszt > 0

1 użytkowników online, w tym zalogowanych: 0, gości: 1