Попытка получить дату истечения срока действия из таблиц в SQL

#tsql #view

Вопрос:

У нас есть База данных выдачи , где выдаются разрешения. Существует 16 таблиц со строкой «СРОК ДЕЙСТВИЯ», которая является датой и временем. Я пытаюсь создать TSQL / представление , которое можно запрашивать из всех 16 таблиц с разрешениями, срок действия которых истекает в текущем месяце или в течение 30 дней, которые можно поместить в excel, так как у каждого пользователя есть адрес электронной почты, поэтому туристическое бюро может отправлять пользователям электронные письма в качестве предупреждения.

 SELECT dbo.Table1.EXPIRY ,dbo.Table2.EXPIRY AS Expr1 ,dbo.Table3.EXPIRY AS Expr2 ,dbo.Table4.EXPIRY AS Expr3 ,dbo.Table5.EXPIRY AS Expr4 
FROM dbo.Table1 
INNER JOIN dbo.Table2 ON dbo.Table1.ID = dbo.Table2.ID 
INNER JOIN dbo.Table3 ON dbo.Table1.ID = dbo.Table3.ID 
INNER JOIN dbo.Table4 ON dbo.Table1.ID = dbo.Table4.ID 
INNER JOIN dbo.Table5 ON dbo.Table1.ID = dbo.Table5.ID
 

Я младший администратор базы данных, поэтому просто изучаю TSQL. Мне было интересно, может ли кто — нибудь помочь

Комментарии:

1. Приведите некоторые примеры данных и то, что вы уже пробовали.

2. Спасибо. Пожалуйста, найдите ниже, как было запрошено, ВЫБЕРИТЕ dbo. Таблица 1. СРОК ГОДНОСТИ ,дбо. Таблица 2.СРОК ДЕЙСТВИЯ КАК Expr1 ,dbo. Таблица 3.СРОК ГОДНОСТИ КАК Expr2 ,dbo. Таблица 4.СРОК ДЕЙСТВИЯ КАК Expr3 ,dbo. Таблица 5.СРОК ДЕЙСТВИЯ КАК Expr4 ИЗ dbo. Таблица 1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ dbo. Таблица 2 НА dbo. Table1.ID = dbo. Таблица 2. ИДЕНТИФИКАТОР ВНУТРЕННЕГО СОЕДИНЕНИЯ dbo. Таблица 3 НА dbo. Table1.ID = dbo. Таблица 3. ИДЕНТИФИКАТОР ВНУТРЕННЕГО СОЕДИНЕНИЯ dbo. Таблица 4 НА dbo. Table1.ID = dbo. Таблица 4. ИДЕНТИФИКАТОР ВНУТРЕННЕГО СОЕДИНЕНИЯ dbo. Таблица 5 ПО dbo. Table1.ID = dbo. Table5.ID

3. @user16599922 Есть ли в ваших таблицах столбец ИСТЕЧЕНИЯ СРОКА ДЕЙСТВИЯ ? И, пожалуйста, добавьте некоторые примеры данных для таблиц. Тогда любой желающий может взглянуть. Лучше, если вы сможете добавить инструкции SQL. Не просто изображения таблиц данных

Ответ №1:

Сначала вам нужно найти все таблицы, у которых есть поле истечения срока действия, поэтому вам следует просмотреть их в системных таблицах. Затем динамично формируйте свои запросы и выполняйте их.

 declare @sql varchar(max);

select @sql = CONCAT(@sql, 'select email from dbo.', t.Name, `;`) 
from sys.columns c 
join sys.tables t on c.object_id = t.object_id  
where c.name like 'EXPIRY%'

exec(@sql)
 

Прямо сейчас этот sql даст вам x результатов, в зависимости от того, сколько таблиц у вас истекло, вам нужно будет применить фильтры, и если вы хотите использовать объединение представлений внутри CONCAT

Комментарии:

1. Спасибо , это дает мне адреса электронной почты , все, что мне нужно, дата истечения срока действия из строки истечения срока действия . Постараюсь. Большое спасибо