2016-09-19 28 views
0

Ich versuche eine gespeicherte Prozedur zu erstellen, die jeden Tag dynamisch eine Spalte mit dem heutigen Datum hinzufügt. Der Grund dafür ist, dass ich jeden Tag eine neue Datei mit einer neuen Zählung für jedes Element erhalte. Sie wollen eine laufende historische Summe am Tag behalten. Nur so kann ich denken, dass ich das kann, es sei denn einer von euch hat einen Vorschlag für dieses Schemadesign. Vielen Dank.Dynamisch Spalte mit dem heutigen Datum hinzufügen

+0

'in Tabelle einfügen Werte (col1, col2, getdate())'? Brauche mehr Details von dir. – artm

+0

Warum nicht einfach jeden Tag eine Zeile hinzufügen, die ein Datum als eine Spalte und eine laufende Summe als eine andere hat? –

+0

Sie könnten wahrscheinlich mit einer normalisierten Tabelle zu tun und eine Pivot-Abfrage – Paparazzi

Antwort

1

Hier ist Ihre Abfrage:

IF EXISTS (select * from dbo.sysobjects where id = object_id(N'[usp_AddCollumByDate]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) 
DROP PROCEDURE usp_AddCollumByDate 
GO 

create procedure usp_AddCollumByDate 
as 
begin 
    declare @sql varchar(max); 
    declare @toDay varchar(20)=CONVERT(varchar(10),GETDATE(),112); 
    set @sql = 'ALTER TABLE MyTable ADD D' + @toDay + ' varchar(max); ' 
    print @sql 
    EXECUTE(@sql); 
end 

exec usp_AddCollumByDate 

Es wird jeden Tag Spalte hinzufügen (zum Beispiel der heute seine Add):

ALTER TABLE MyTable ADD D20160920 varchar(max); 

Jetzt Sorgfältig hören:

  1. Ich habe einen Briefhinzufügen 0 vor dem heutigen Datum. Es ist, weil 20160920 ein INVALID Spaltenname ist. Sie haben eine Spalte mit einem Buchstaben beginnen (zum Beispiel An3, a33 ...)
  2. ich den Stil 112, die das Datum als yyyymmdd gibt verwendet hat, Sie nicht 11, 111, 10 und etwas andere Art verwenden können weil es das Datum mit wie mm-dd-yyyy gibt und es ist ein INVALID Spaltenname. Sie Kann - in einem Spaltennamen nicht verwenden. Here is more style, Versuchen Sie, Verwendung yyyymmdd, yymmdd Stil
Verwandte Themen