TheSilverFox Ответов: 1

Спецификация вычисляемого столбца Ms SQL min date


Я пытаюсь ввести вычисляемую спецификацию столбца (col7) в столбец, чтобы получить минимальную дату, а не максимальную дату:

Что я уже пробовал:

это прекрасно работает:
<pre>dateadd(yyyy,[col5],[col6])

однако если я попытаюсь указать что-то вроде:
Min((dateadd(year,[col5],[col6]),('12/31/2099')

Я все время получаю sql 'ошибка проверки формулы для col7'
Я просто не уверен, как это должно быть написано или даже возможно ли это в спецификации вычисляемого столбца.
для справки col5 это целое число а col6 это дата
Как я могу исправить это в спецификации вычисляемого столбца?
Заранее спасибо.

1 Ответов

Рейтинг:
0

Bryian Tan

Я думаю, что спецификация вычисляемого столбца не допускает агрегации (Min, Max,...). Вы можете попробовать что-то вроде приведенного ниже. Если 12/31/2099 > что дата dateadd([year],[col5],[col6]), то мы можем предположить, что более поздняя-это минимальная дата, иначе первая-это минимальная дата

DECLARE @DateCom TABLE(
	[Year] [int] NULL,
	[Col5] [int] NULL,
	[Col6] [date] NULL,
	[Col7]  AS (case when dateadd(year,[col5],[col6])<'12/31/2099' then dateadd(year,[col5],[col6]) else '12/31/2099' end)
)

INSERT INTO @DateCom
	SELECT 2018, 2, '2018-01-01' UNION
	SELECT 2018, 3, '2011-01-01' UNION
	SELECT 2014, 10, '2017-08-25' UNION
	SELECT 2017, 1, '2017-08-25' UNION
	SELECT 2020, 100, '2020-01-01' 

SELECT * FROM @DateCom


ВЫХОД:
Year	Col5	Col6	        Col7
2014	10	    2017-08-25	    2027-08-25
2017	1	    2017-08-25	    2018-08-25
2018	2	    2018-01-01	    2020-01-01
2018	3	    2011-01-01	    2014-01-01
2020	100	    2020-01-01	    2099-12-31