Wyświetlanie tabeli bez NULL (MS SQL)

0

Mama taka tabela:

KOL_A KOL_B KOL_C

1 NULL NULL
2 NULL NULL
3 NULL NULL
NULL 4 NULL
NULL 5 NULL
NULL 6 NULL
NULL NULL 7
NULL NULL 8
NULL NULL 9

Jak zbudować zapytane aby uzyskać takie wynik?

KOL_A KOL_B KOL_C

1 4 7
2 5 8
3 6 9

0

Ale to są 3 różne rekordy z różnymi kluczami(o ile je masz). Jeżeli chcesz je zmieszać to musisz chyba wykonać 3 zapytania i ręcznie dane ze sobą połączyć.

0

Można by pokombinować ale najprościej będzie jak zrobisz sobie tabelę w pamięci z trzema kolumnami i będziesz je uzupełniał odpowiednim selectem da się to zrobić prostym blokiem kodu. Ewentualnie select na zasadzie kolumna, wartość i odpowiednim case'm uzupełniać dane, a następnie pivotem odwrócić kolumny z wierszami ale to jest chyba mniej wydajne, niż rozwiązanie z tabelą tymczasową. Nie znając DDL nie podpowiem Ci nic więcej niestety

0

To można zrobić funkcją agregującą, ale trzeba mieć wyróżnik, zakładam, że sql >=2005:

SELECT
	max(case when k='a' then v else null end) as kolA
	,max(case when k='b' then v else null end) as kolB
	,max(case when k='c' then v else null end) as kolC
FROM (
	SELECT
		row_number() over (order by kol_a) r
		,'a' as k
		,Kol_A as v
	from
		tab
	where
		not kol_a is null
	union all
	SELECT
		row_number() over (order by kol_b) r
		,'b' as k
		,Kol_b as v
	from
		tab
	where
		not kol_b is null
	union all
	SELECT
		row_number() over (order by kol_c) r
		,'c' as k
		,Kol_c as v
	from
		tab
	where
		not kol_c is null
	) DT
GROUP BY
	R

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