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

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.

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.

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.

0

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

:D

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

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