I Daten Tabelle in nächsten 15 Jahren mit allen Terminen erstellt ...IF-Klausel in SQL-Prozedur
CREATE TABLE [dbo].[All_Dates](
[Year] [int] NOT NULL,
[Quarter] [nvarchar](6) NOT NULL,
[Month] [nvarchar](6) NOT NULL,
[Week] [nvarchar](7) NOT NULL,
[Day] [nvarchar](50) NOT NULL,
[DayKey] [tinyint] NOT NULL,
[DateName] [nvarchar](50) NOT NULL,
[DateKey] [date] NOT NULL,
PRIMARY KEY CLUSTERED
(
[DateKey] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Zweck davon ist, dass Zeitperioden in einigen Verfahren für die Berichterstattung zu verwenden. Also, Problem ist hier jetzt, wenn ich einige IF-Klausel am Anfang der Prozedur haben muss, wenn Parameter benötigt werden, weil ich den Kunden die Wahl geben muss, zwischen Monats- oder Quartalsbericht zu wählen. Für monatliche habe ich Code:
ALTER procedure [dbo].[proc1]
@dt date
as
declare @startdate date
,@enddate date
SET @StartDate = (select min(datekey) from TDW.dbo.All_Dates where month = convert(varchar(6),@dt,112))
SET @EndDate = (select max(datekey) from TDW.dbo.All_Dates where month = convert(varchar(6),@dt,112))
Also, ich brauche so etwas wie wenn TIME_RANGE = Quartal dann ...
https://msdn.microsoft.com/en-GB/library/ms182717.aspx –
Diese 'convert (varchar (6), @ dt, 112)' gibt keinen Monat zurück – McNets