t-sql/sql - zamienienie kolumn w widoku w zależności od warunku

Odpowiedz Nowy wątek
2015-08-20 19:40
0

Hej,

Mam taki problem .Spróbuję go zobrazować na prostej bazie Northwind:
https://northwinddatabase.codeplex.com

Chciałem zrobić widok z tabeli Customers gdzie kolumna Region dostanie alias kolumny Country, czyli można powiedzieć że do kolumny Country wpiszę wartości z kolumny Region (co oczywiście nie jest prawdą, ale tak to będzie widoczne w widoku). wyświetlę ją razem z kolumną ContactName

Zrobiłem to tak:

create view test as
select ContactName, Region as Country from Customers

Problem mam z wprowadzeniem modyfikacji. Chciałem żeby w przypadku kiedy wartość z tabeli Region jest pusta/wynosi NULL nie była jakby wpisywana do kolumny Country. Domyślam się że w ogóle się nie da tego zrobić przez aliasy. Ale muszę to zrobić tak, żeby zmiana była widoczna w tym widoku. Będę wdzięczny za pomoc.

edytowany 1x, ostatnio: pitcairn1987, 2015-08-20 19:40

Pozostało 580 znaków

2015-08-20 20:45
0

Jaka wartość w takim razie ma być w Country jeśli Region jest pusty?
W select możesz używać zdaje się konstrukcji case when warunek then coś else coś innego.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."
edytowany 1x, ostatnio: somekind, 2015-08-20 20:45

Pozostało 580 znaków

2015-08-20 21:47
0

fakt, zapomniałem napisać. jeśli region jest pusty ma zostać wartość z country. case chciałem na początku użyć ale nie za bardzo wiem jak to użyć razem z widokiem.

Pozostało 580 znaków

2015-08-20 22:35
0

ok. problem rozwiązałem. wystarczył użyć isnull()

:D

Pozostało 580 znaków

2015-08-20 23:30
0

może również połączyć 2 kolumny w zależności co użytkownik wprowadził:

  insert into  [nazwa_bazy].[dbo].[name_table]     values (1, 'region 1', 'panstwo 1')
  insert into  [nazwa_bazy].[dbo].[name_table]   values (2, 'region 2',null)
  insert into  [nazwa_bazy].[dbo].[name_table]   values (3, null ,'panstwo 2')
  insert into  [nazwa_bazy].[dbo].[name_table]   values (4, null ,null)

    select   case 
            when  [cantry] is null then  [region]  
            when  [region] is null then  [cantry]  
          else [region] + ' ' + [cantry]   end
     FROM [nazwa_bazy].[dbo].[name_table]   

wynik:

region 1 panstwo 1
region 2
panstwo 2
NULL

edytowany 2x, ostatnio: kasiaKasia, 2015-08-20 23:32

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