#realJSOP
Создайте в базе данных таблицу, содержащую нужную схему. Он не должен содержать никаких данных. (Разрешение нулевых значений будет соответствовать месяцам, которые не имеют 31 дня.)
CREATE TABLE SCHEMA_TEMPLATE
(
NAME nvarchar(255) NULL,
Day1 DATE NULL,
...
Day31 DATE NULL
) ON PRIMARY;
Затем напишите сохраненный процесс, который создаст нужную таблицу данных, имеющую ту же схему, что и таблица SCHEMA_TEMPLTE. Передайте ему нужное имя таблицы (например, "May2018"):
CREATE PROCEDURE dbo.sp_CreateTableForMonth
@tableName nvarchar(50)
AS
BEGIN
-- this query will duplicate the schema of the SCHEMA_TEMPLATE table.
DECLARE @query nvarchar(MAX) =
'SELECT TOP 0 * INTO '+@tableName+' FROM dbo.SCHEMA_TEMPLATE';
EXEC sp_executesql @query;
END
После этого очень просто поместить ваши данные в таблицу из вашего кода.
===================================
Я бы также вернулся к вашей схеме. Мне кажется, что может быть лучший способ представления данных, например, просто поместить все данные в одну таблицу и использовать
MERGE
команда для обновления таблицы. Это лучше, чем иметь один стол на каждый месяц...
Member 13858616
Привет Джон,
большое вам спасибо за ваше решение... Я был бы признателен, если бы вы объяснили последний случай, о котором вы упомянули, - это использование слияния?
Чтобы у меня был только один правильный столик.. Так что не могли бы вы поделиться своей идеей по этому поводу?
Member 13858616
На самом деле имена столбцов day1,day2,day3...day3 не являются постоянными. Он отличается для каждого месяца, как 1/02/2018(понедельник), 2/02/2018(вторник)...и т.д...
Таким образом, эти значения будут автоматически всплывать в моих представлениях сетки в соответствии с моим кодом. Я просто хотел создать таблицу с этими столбцами(столбцами моего представления сетки). Поэтому я не просто хочу создать таблицу динамически, я хочу создать таблицу динамически с полями, взятыми из моего представления сетки.