MS SQL+Warunek If, else if w widoku

0

Witam wszystkich.
Mam przygotować widok, w który jako pole ma wyświetlać iloczyn z dwóch kolumn. Załóżmy że mamy tabelę z takimi polami:

ID, NAZWA, RODZAJOPERACJI, STAWKA_SZYCIE, STAWKA_DZIANIE, ILOSC. I teraz w zależności jaka będzie wartość w kolumnie RODZAJOPERACJI, do obliczenia mam użyć pola STAWKA_SZYCIE (jeśli pole RODZAJOPERACJI = szycie) lub STAWKA_DZIANIE(analogicznie, RODZAJOPERACJI = dzianie), i tak którąś z tych kolumn przemnożyć przez ilość i wynik wyświetlić w dodatkowej kolumnie (to akurat wiem, wystarczy użyć konstrukcji 'AS nowa_kolumna'); Pytanie moje brzmi tak: czy można używać warunków if-else if-else podczas tworzenia definicji widoku w SQL? Uzywam MS SQL 2008...

Z góry dziękuję za pomoc.

0

Musisz uzyc CASE czyli:

select ID, NAZWA, RODZAJOPERACJI, STAWKA_SZYCIE, STAWKA_DZIANIE, ILOSC, iloczyn= CASE RODZAJOPERACJI when 'szycie' then  STAWKA_SZYCIE*ILOSC else STAWKA_DZIANIE*ILOSC end from .............

Tak moze byc ?

0

Moje zapytanie brzmi tak:

SELECT     dbo.PRACOWNICY.IMIE + ' ' + dbo.PRACOWNICY.NAZWISKO AS opis_pracownicy, dbo.KARTY_PRACY.ID_KARTY_PRACY, 
                      dbo.KARTY_PRACY.KOD_KARTY_PRACY, dbo.RODZAJE_INDEKSOW.RODZ_INDEKSU, dbo.INDEKSY.INDEKS, dbo.OPERACJE.NAZ_OPERACJI, 
                      dbo.RODZAJE_OPERACJI.RODZ_OPERACJI, ILOCZYN = dbo.Rodzaje_operacji.rodzaj_operacji WHEN 'szycie' THEN dbo.Indeksy.Stawka_szyc*dbo.Karty_pracy.ilosc_dobrych_oper 
else dbo.Indeksy.Stawka_pras*dbo.Karty_pracy.ilosc_braki_dziew END
FROM         dbo.OPERACJE LEFT OUTER JOIN
                      dbo.RODZAJE_OPERACJI ON dbo.OPERACJE.ID_RODZAJE_OPERACJI = dbo.RODZAJE_OPERACJI.ID_RODZAJE_OPERACJI RIGHT OUTER JOIN
                      dbo.KARTY_PRACY ON dbo.OPERACJE.ID_OPERACJE = dbo.KARTY_PRACY.ID_OPERACJE LEFT OUTER JOIN
                      dbo.INDEKSY LEFT OUTER JOIN
                      dbo.RODZAJE_INDEKSOW ON dbo.INDEKSY.ID_RODZAJE_INDEKSOW = dbo.RODZAJE_INDEKSOW.ID_RODZAJE_INDEKSOW RIGHT OUTER JOIN
                      dbo.TECHNOLOGIE ON dbo.INDEKSY.ID_INDEKSY = dbo.TECHNOLOGIE.ID_INDEKSY ON 
                      dbo.KARTY_PRACY.ID_TECHNOLOGIE = dbo.TECHNOLOGIE.ID_TECHNOLOGIE LEFT OUTER JOIN
                      dbo.PRACOWNICY ON dbo.KARTY_PRACY.ID_PRACOWNICY = dbo.PRACOWNICY.ID_PRACOWNICY

I się czepia, że: niepoprawna składnia koło słowa WHEN (Incorrect syntax near the keyword 'WHEN').

0

Brakuje słowa CASE.

0

Racja, jednak człowiek po ośmiu godzinach pracy już nie dostrzega tak dobrze ;)

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