powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вычисляемый столбец
3 сообщений из 3, страница 1 из 1
Вычисляемый столбец
    #40035488
gutenmorgen21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.

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

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

Заранее бесконечно благодарю.
...
Рейтинг: 0 / 0
Вычисляемый столбец
    #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
Вычисляемый столбец
    #40036046
gutenmorgen21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Grim08,


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


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