MS SQL Widok z tabeli z zmiennymi nazwami kolumn

0

Witam,
Muszę napisać widok w którym odczytywane będzie połączenie dwóch tabel przez union.
Jedna z tych tabel niestety ma zmienne nazwy kolumn co oznacza, że musze użyć zmienne.
Takie zapytanie z zmiennymi wymusza potem wykonanie polecenia exec co komplikuje budowę funkcji, którą można by było wykorzystać w widoku.
Czy jest jakiś sposób na zrobienie takiego widoku?

Pozdrawiam,
Paweł

0

Używałeś już uniona?
Z pewnością na wyjściu są jednolite nazwy kolumn (choć trudno powiedzieć jakie).
A co ma exec do tego?
Moze daj kod.

Jeśli nagłówek jest kłopotem, to AS ["Ala ma kota" ] czy jakoś tak może pomóc

1

tabel niestety ma zmienne nazwy kolumn a cóż to za twór? Podaj DDL obu tabel, i co chcesz uzyskać w wyniku

0

Przy zapisie zwrotnym czyli writback z serwera OLAP tworzona jest tabela do przechowywania wpisów. Problem z tą tabela jest taki, że może być usuwana i zakładana wielokrotnie a wtedy zmieniają się nazwy kolumn.
Więc aby połączyć dane pierwotne z wpisami użytkownika trzeba łączyć dwie tabele pobierając właśnie dane z tabeli gdzie mogą się zmienić nazwy kolumn. Dlatego odczyt z tej tabeli mniej więcej wygląda tak:

DECLARE @strFactTableName nvarchar(300)
DECLARE @SQL nvarchar(max)
DECLARE @strColumnName_MPK nvarchar(300)
DECLARE @strColumnName_Ilość nvarchar(300)
SET @strFactTableName = 'KOSZTY'
                       
IF  EXISTS (SELECT DISTINCT * FROM dbo.sysobjects where name LIKE @strTableName + '%')
BEGIN
	SELECT @strColumnName_MPK = COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '' + @strTableName + '' AND COLUMN_NAME LIKE 'MPK%'
	SELECT @strColumnName_Ilość  = COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '' + @strTableName + '' AND COLUMN_NAME LIKE 'Ilość%'
END


SET @SQL = 'SELECT SUM('+@strColumnName_Ilość+'), '+@strColumnName_MPK+', FROM '+@strTableName
 EXEC  (@SQL)

I tu pojawia się problem gdy próbuje na podstawie tego zbudować widok (:

1

tak się nie da - musiałbyś za każdym razem jak zmienią się nazwy kolumn stworzyć widok od nowa

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