Pomoc przy zapytaniu - TSQL

Odpowiedz Nowy wątek
2018-03-25 18:42
0

Cześć,
Proszę o pomoc. Uczę się :)
Niestety nie potrafię precyzyjnie określić tematu dla tego problemu.

Potrzebuje uzyskać maksymalną wartość z porównania dwóch kolumn dla danego rekordu (przedstawię to na numerach pesel).
Poniżej objaśniam o co chodzi:

Przykładowa tabela
screenshot-20180325180418.png
wynik który chciałabym uzyskać to
screenshot-20180325180709.png

W momencie kiedy opieram zapytanie na iif lub case, np.

select distinct 
    Imie
    ,Nazwisko
    ,pesel
    ,iif(Kolumna_A='1' or Kolumna_X='1','1', iif(Kolumna_A='2' or Kolumna_X='2','2','0')) as Nowy_AX
    ,iif(Kolumna_B='1' or Kolumna_Z='1','1', iif(Kolumna_B='2' or Kolumna_Z='2','2','0')) as NowyBZ
    ,iif(Kolumna_C='1' or Kolumna_Y='1','1', iif(Kolumna_C='2' or Kolumna_Y='2','2','0')) as NowyCY
from XX.dbo.TABELA_TEST

lub

select distinct 
    Imie
    ,Nazwisko
    ,pesel
    ,case 
    when Kolumna_A='1' or Kolumna_X='1' then '1'
    when Kolumna_A='2' or Kolumna_X='2' then '2'
    else '0'
    end as Nowy_AX
    ,case 
    when Kolumna_B='1' or Kolumna_Z='1' then '1'
    when Kolumna_B='2' or Kolumna_Z='2' then '2'
    else '0'
    end as NowyBZ
    ,case 
    when Kolumna_C='1' or Kolumna_Y='1' then '1'
    when Kolumna_C='2' or Kolumna_Y='2' then '2'
    else '0'
    end as NowyCY
from XX.dbo.TABELA_TEST

otrzymuje następujący wynik:
screenshot-20180325182056.png

Jak mogę otrzymać Imię, Nazwisko, pesel, i tylko maksymalną wartość z reszty kolumn?

Na co trzeba zwrócić uwagę:

  • kolumna o nazwie "system" definiuje dwie nazwy systemów A oraz B (dla systemu A wartości występują w kolumnach: Kolumna_A, Kolumna_B, Kolumna_C, dla systemu B wartości występują w kolumnach: Kolumna_X, Kolumna_Y, Kolumna_Z) niestety taką tablę już otrzymuję i nie mogę tego zmienić

Dziękuję za pomoc.
Pozdrawiam

Pozostało 580 znaków

2018-03-25 20:55
select
  pesel,
  max(case when system = 'A' then Kolumna_A else Kolumna_X end) Kolumna_AX,
  max(case when system = 'A' then Kolumna_B else Kolumna_Z end) Kolumna_BZ,
  max(case when system = 'A' then Kolumna_C else Kolumna_Y end) Kolumna_CY
from
  tabela
group by
  pesel

Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Pozostało 580 znaków

2018-03-25 21:06
0

Dziękuję, problem rozwiązany

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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