Я создал таблицу даты со всеми датами в ближайшие 15 лет ...IF пункт в процедуре SQL
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
Цель этого заключается в использовании, что периоды времени в некоторых процедурах отчетности. Итак, проблема здесь сейчас, когда мне нужно иметь некоторое предложение IF о начале процедуры, когда требуются параметры, потому что мне нужно дать выбор клиентам выбирать между ежемесячным или ежеквартальным отчетом. Для ежемесячно у меня есть код:
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))
Итак, мне нужно что-то вроде, если промежуток_времени = четверть тогда ...
https://msdn.microsoft.com/en-GB/library/ms182717.aspx –
Этот 'convert (varchar (6), @ dt, 112)' не возвращает месяц – McNets