Ich schrieb eine dynamische Pivot und muss die Ergebnisse in eine temporäre Tabelle eingeben, um die Ergebnisse zu einer anderen Tabelle zu verbinden.Wählen Sie * in Temp Tabelle von Dynamic SQL Ergebnisse
Vielleicht gibt es einen besseren Weg, um die gewünschten Ergebnisse zu erhalten, ohne in eine Temp-Tabelle einzufügen? Kann ich an einer Tabelle im Dynamic Pivot teilnehmen, um das gewünschte Ergebnis zu erzielen?
Getting die Fehler:
Msg 263, Level 16, State 1, Line 59
Must specify table to select from.
Msg 1038, Level 15, State 5, Line 59
An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as "" or [] are not allowed. Change the alias to a valid name.
Mein Code ist folgende:
declare @RealYear as nvarchar(max)
select @RealYear= '2016'
IF OBJECT_ID('tempdb.dbo.#TempCosts', 'U') IS NOT NULL
DROP TABLE #TempCosts;
IF OBJECT_ID('tempdb.dbo.#TempCostsFinal', 'U') IS NOT NULL
DROP TABLE #TempCostsFinal;
select * into #TempCosts from
(
--Journal Entries
select * from lth.dbo.vwJournalEntries_LTWS1
union all
--Non Journal Entries
select *,'' from lth.dbo.vwweeklydebits_ltws1
)D
--select * from #TempCosts
DECLARE @cols AS NVARCHAR(MAX)
declare @query AS NVARCHAR(MAX)
declare @temptable as nvarchar(max)
select @cols = STUFF((SELECT ',', QUOTENAME(AccountRef_FullName)
from #TempCosts
group by AccountRef_FullName
having accountref_Fullname is not null
order by AccountRef_FullName
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT *, ' + @cols + ' from
(
select *
from #TempCosts
where year = ' + @RealYear + '
) x
pivot
(
sum(Amount)
for AccountRef_FullName in (' + @cols + ')
) p
'
execute(@query)
select * into #TempCostsFinal Execute(@query)
Due Drop Für das dynamische Pivot wird die Temp-Tabelle dynamische Spalten haben, die ich nicht kenne, bis die Abfrage ausgeführt wurde. –
@GrimRieber Siehe die Antwort von John. Scheint, dass es eine gute Option ist. Verwenden Sie entweder eine globale temporäre Tabelle oder eine "permanente temporäre" Tabelle. Vergessen Sie nicht, die Tabelle (falls vorhanden) vor dem Ausführen der Abfrage zu löschen. –