powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Имя таблицы в виде функции ?
9 сообщений из 9, страница 1 из 1
Имя таблицы в виде функции ?
    #40126972
Stalker16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеются таблицы, которые создаются каждый день и имеют имя в виде сегодняшнее даты. Хочу создать универсальный простой запрос вывода данных из таблицы за сегодняшний день. Можно ли создать запрос, в котором после FROM (table_name) , не писать каждый день имя таблицы в виде новой дату, а была функция которая просто берет сегодняшнюю дату ? Или имя таблицы можно только явно задавать
...
Рейтинг: 0 / 0
Имя таблицы в виде функции ?
    #40126978
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stalker16,

Такой запрос создать нельзя.

Сделайте лучше синоним, и меняйте его раз в сутки в джобе.
...
Рейтинг: 0 / 0
Имя таблицы в виде функции ?
    #40126983
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
функцией нельзя (за искл. CLR), т.к. если нужно обойти проблему с динамическим именем объекта - придётся использовать динамический SQL,
а в функции не получится собрать результат из sp_executesql т.к. там с вызовом процедур сильно всё ограничено

а вот процедурой вполне можно, например
(тут конечно join-ы идут лесом пока отдельный insert не сделаешь)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
create table dbo.my_table_20220115(id int,nm varchar(32))
insert into dbo.my_table_20220115 values(1,'Anna'),(2,'Sally'),(3,'Tatiana'),(4,'Helen')
go
create procedure dbo.tstp as
begin
declare @sql nvarchar(1024),@dt nvarchar(8)
set @dt=cast(format(getdate(),'yyyyMMdd') as nvarchar(8))
set @sql=N'select id,nm from my_table_'+@dt
exec sp_executesql @sql
end
go
exec dbo.tstp
drop procedure dbo.tstp
drop table dbo.my_table_20220115



но с синонимами идея выше лучше т.к. можно обновление ссылки делать вместе с созданием нового объекта (одним ETL процессом)
...
Рейтинг: 0 / 0
Имя таблицы в виде функции ?
    #40127013
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stalker16,

Лучше выпрямляйте архитектуру, пусть таблица будет одна, а меняется там дата в столбце. Тогда не придется костылить
...
Рейтинг: 0 / 0
Имя таблицы в виде функции ?
    #40127019
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stalker16
Имеются таблицы, которые создаются каждый день и имеют имя в виде сегодняшнее даты.


1. Изучить реляционную теорию.
2. Осознать, что данные хранятся ВНУТРИ таблиц.
3. Данные НЕ хранятся в названиях таблиц.
4. Все станет простым и пребудет с тобой щастье...
...
Рейтинг: 0 / 0
Имя таблицы в виде функции ?
    #40127020
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg
Stalker16,

Такой запрос создать нельзя.

Сделайте лучше синоним, и меняйте его раз в сутки в джобе.

Вам не стыдно?
...
Рейтинг: 0 / 0
Имя таблицы в виде функции ?
    #40127023
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stalker16Хочу создать универсальный простой запрос вывода данных из таблицы за сегодняшний день.



dynamic sql
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
-- prepare
create table [20220116]
(i int identity, a char(1))
go
insert into [20220116](a)
select 'a'
go 10

-- select
declare @select varchar(100)
select @select=FORMATMESSAGE('select * from %s',quotename(convert(varchar(10),getdate(),112)))
exec (@select)
go


...
Рейтинг: 0 / 0
Имя таблицы в виде функции ?
    #40127024
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
alexeyvg
Stalker16,

Такой запрос создать нельзя.

Сделайте лучше синоним, и меняйте его раз в сутки в джобе.

Вам не стыдно?


хоть вопрос и не мне скажу: нам всем здесь должно быть стыдно!
...
Рейтинг: 0 / 0
Имя таблицы в виде функции ?
    #40127086
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
alexeyvg
Stalker16,

Такой запрос создать нельзя.

Сделайте лучше синоним, и меняйте его раз в сутки в джобе.

Вам не стыдно?
Вопрос же был не от проектировщика базы, а от писателя запросов...

Так то да, схема данных не очень, а даже если она лучше всего подходит для решаемой задачи, первое, о чём должен подумать проектировщик, это: "а как я потом буду получать данные, или моя база только для писателей?"
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Имя таблицы в виде функции ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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