[postgreSQL] jak uzaleznic wynik od dwoch zmiennych?

0

mam taka tabelke:

nazwa

id | wart1 | wart2 |
1 | 1 | 1 |
2 | 1 | 2 |
3 | 2 | 1 |
4 | 2 | 2 |

zalzy mi teraz zeby wybrac te dwie wartosci i w zaleznosci od nich wypisac cos np:
IF wart1 = 1 AND wart2 = 1 THEN '11'
Ale nie wiem jak to zrobic w kodzie SQL bo jak np mam CASE
SELECT CASE wart1 WHERE 1 THEN '11' END to uzalezniony wynik jest od jednej wartosci
a jak uzaleznic go od obu?

0
SELECT CASE WHEN (wart1 = 1) AND (wart2 = 1) THEN '11' END

http://www.postgresql.org/docs/7.4/static/functions-conditional.html

0

SELECT CAST(wart1 AS varchar) || CAST(wart2 AS varchar)

0

mhm dziala jesli chodzi o wysweitlenie wartsoci czyli np zrobilem tak:
SELECT *,CASE WHEN (posse_id = 1) AND (mode_id = 1) THEN 'ok' END FROM tabela
wyswietla mi w odpowiednim momencie napis OK
A czy da sie zrobic zeby on rozpoznal jaki jest warunek czyli to co wyzej 1 i 1, 1 i 2, 2 i 1 i zeby wykonywal wtedy zapytanie czyli:
SELECT *,CASE WHEN (posse_id = 1) AND (mode_id = 1) THEN (SELECT name FROM tabela2 WHERE id = 1) END FROM tabela
Jak wstawiam to co jest pogrubione to nie dziala . czy jest na to jakis sposob ?

0

Musisz wykonać złączenie, np gdyby tabela2 = posse:

SELECT 
  t.*, CASE WHEN (t.posse_id=1) AND (t.mode_id=1) THEN p.name END
FROM
  tabela t JOIN tabela2 p ON t.posse_id=p.id
0

wedle instrukcji zrobilem tak:

SELECT t.invoice_id,t.*,
CASE WHEN (t.posse_id = 1) AND (t.mode_id = 1) THEN pp.invoice_no END,
CASE WHEN (t.posse_id = 1) AND (t.mode_id = 2) THEN pz.invoice_no END 
FROM invoice_date_history t 
JOIN pl_invoice_header_domestic pp ON (t.invoice_id = pp.id)
JOIN pl_invoice_header_foreign pz ON (t.invoice_id = pz.id)

Daje mi to wynik lacznei dwie kolumny np:

| wynik1 | wynik2 |

| 4/4/2006 | |
| | 3/2/2007 |

Wiec prawie wszystko jest ok a mi chodzi jeszcze zeby w zaleznosci od wartosci
POSSE_ID i MODE_ID wysweitlal tylko jeden wynik czyli:
Jesli POSSE_ID = 1 i MODE_ID = 1 TO wybierz nr z TABELKI1
Jesli POSSE_ID = 1 i MODE_ID = 2 TO wybeirz nr z TABELKI2

czy da sie to zrobic w zapytaniu ? czy nalezaloby napisac funkcje w PL/SQL ?

0
CASE WHEN (t.posse_id = 1) AND (t.mode_id = 1) THEN pp.invoice_no 
WHEN (t.posse_id = 1) AND (t.mode_id = 2) THEN pz.invoice_no END 

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