Wybór danych do wyświetlania

Wybór danych do wyświetlania
M0
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
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:

Kopiuj
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ąć?

AN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 41
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

Vardamir
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

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

Kopiuj
IF koszt=0 THEn
SELECT...
ELSE
SELECT...
abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
1

ech specjaliści...

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.