Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вычисляемый столбец / 3 сообщений из 3, страница 1 из 1
13.01.2021, 16:04
    #40035488
gutenmorgen21
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
Всем привет.

Помогите пожалуйста разобраться, какой запрос нужно использовать, чтобы заполнить столбцы (сделать столбцы вычисляемыми):
- в новом созданном столбце (пусто, NULL) на каждой строке проставить значение "1"
- в другом новом созданном столбце (пусто, NULL) сделать расчет, определить количество дней (есть колонка с датой начала и колонка с датой конца), при этом считая первый и последний день.

UPDATE как я поняла не подходит..возможно ошибаюсь..

Заранее бесконечно благодарю.
...
Рейтинг: 0 / 0
13.01.2021, 16:33
    #40035499
Grim08
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
gutenmorgen21,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
DROP TABLE IF EXISTS #TABLE;

CREATE TABLE #TABLE(
	DATE_START DATE NOT NULL,
	DATE_END DATE NOT NULL,
	FIRST_NEW_COLUMN INT NULL,
	SECOND_NEW_COLUMN INT NULL
);

INSERT INTO #TABLE(DATE_START, DATE_END)
SELECT DATE_START, DATE_END
FROM (VALUES ('20210101', '20210101')
			,('20210101', '20210102')
			,('20210101', '20210131')
			,('20210101', '20211231')) AS t(DATE_START, DATE_END);
--Пока новые столбцы пусты
SELECT DATE_START, DATE_END, FIRST_NEW_COLUMN, SECOND_NEW_COLUMN FROM #TABLE;

--Создадим CONSTRAINT на FIRST_NEW_COLUMN который нужно заполнить 1, но сначала придется удалить
ALTER TABLE #TABLE DROP COLUMN FIRST_NEW_COLUMN;
ALTER TABLE #TABLE ADD FIRST_NEW_COLUMN INT NOT NULL CONSTRAINT DF_FIRST_NEW_COLUMN DEFAULT(1); 
--Первый заполнился
SELECT DATE_START, DATE_END, FIRST_NEW_COLUMN, SECOND_NEW_COLUMN FROM #TABLE;
/*
--Или вот так если нужен вычисляемый, нельзя сделать из существующего столбца вычисляемый
ALTER TABLE #TABLE DROP COLUMN FIRST_NEW_COLUMN;
ALTER TABLE #TABLE ADD FIRST_NEW_COLUMN AS (1); 
--Первый заполнился
SELECT DATE_START, DATE_END, FIRST_NEW_COLUMN, SECOND_NEW_COLUMN FROM #TABLE;
*/
--Проделаем тоже самой со вторым столбцом, нельзя сделать из существующего столбца вычисляемый
ALTER TABLE #TABLE DROP COLUMN SECOND_NEW_COLUMN;
ALTER TABLE #TABLE ADD SECOND_NEW_COLUMN AS (DATEDIFF(DAY, DATE_START, DATE_END) + 1); 
--Второй заполнился
SELECT DATE_START, DATE_END, FIRST_NEW_COLUMN, SECOND_NEW_COLUMN FROM #TABLE;

/*
--ИЛИ UPDATE
UPDATE #TABLE
SET FIRST_NEW_COLUMN = 1
WHERE FIRST_NEW_COLUMN IS NULL

UPDATE #TABLE
SET SECOND_NEW_COLUMN = DATEDIFF(DAY, DATE_START, DATE_END) + 1
WHERE SECOND_NEW_COLUMN IS NULL
*/
...
Рейтинг: 0 / 0
15.01.2021, 11:00
    #40036046
gutenmorgen21
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемый столбец
Grim08,


БОЛЬШОЕ СПАСИБО. Разобралась, стало намного понятнее.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вычисляемый столбец / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]