Wieloktrotne użycie wyniku CASE

0

Witam.

Czy da się kilka razy użyć tego co zwróci CASE ?
Np mam taką funkcję:

CREATE FUNCTION Cennik
(
    @poziomceny int,
    @kontrahent int
)
RETURNS TABLE 
AS
RETURN 
(
SELECT id,  nazwa, Grupa, vat,
        CASE @poziomceny 
        WHEN 1 THEN Netto1 
        WHEN 2 THEN Netto2 
        WHEN 3 THEN Netto3 
        WHEN 4 THEN Netto4 
        WHEN 5 THEN Netto5 
        WHEN 6 THEN Netto6 
        WHEN 7 THEN Netto7 
        WHEN 8 THEN Netto8 
        WHEN 9 THEN Netto9 
        WHEN 10 THEN Netto10
        END [CenaPodstawowa], 
        rabat [Rabat]  -- tu chciałbym kolejny raz użyć tego co zwrócił CASE z @poziomcen , żeby np obliczyć cenę brutto czy cenę po rabacie      
FROM towary
) 

Z góry dziękuję :)

1

podzapytaniem

coś w stylu

SELECT id,  nazwa, Grupa, vat, CenaPodstawowa, CenaPodstawowa + vat as Brutto, rabat
   FROM (
      SELECT id, nazwa, Grupa, vat, rabat
        CASE @poziomceny 
        WHEN 1 THEN Netto1 
        WHEN 2 THEN Netto2 
        WHEN 3 THEN Netto3 
        WHEN 4 THEN Netto4 
        WHEN 5 THEN Netto5 
        WHEN 6 THEN Netto6 
        WHEN 7 THEN Netto7 
        WHEN 8 THEN Netto8 
        WHEN 9 THEN Netto9 
        WHEN 10 THEN Netto10
        END [CenaPodstawowa], 
        rabat [Rabat]  -- tu chciałbym kolejny raz użyć tego co zwrócił CASE z @poziomcen , żeby np obliczyć cenę brutto czy cenę po rabacie      
FROM towary) x
0

swoją drogą wygląda to na źle przemyślaną strukturę bazy - poziomy cen raczej powinny być w osobnej tabeli i powinno się tylko do nich joinować - wtedy tego problemu w ogóle by nie było a poziomów mogłaby być dowolna ilość bez mnożenia kolumn

0

W rzeczywistości struktura wygląda trochę inaczej, chciałem tylko pokazać o co mi chodzi.
Szczerze mówiąc pierwszy raz widzę żeby w FROM używać podzapytania, więc zaraz pokombinuje jak miało by to działać.

0

Możesz użyć też CTE.

0

Sposób z podzapytaniem działa.
Problem rozwiązany a przy okazji nauczyłem się czegoś ciekawego :).

Dziękuję i życzę miłego dnia :)

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