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

t-sql/sql - zamienienie kolumn w widoku w zależności od warunku
P1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 77
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:

Kopiuj
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.

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
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.

P1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 77
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.

P1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 77
0

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

:D

kasiaKasia
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 259
0

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

Kopiuj
  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:

Kopiuj
region 1 panstwo 1
region 2
panstwo 2
NULL

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.