Разбиение таблиц с использованием 2 столбцов
Можно ли разбить таблицу на 2 столбца вместо 1 для функции разбиения?
Рассмотрим таблицу с тремя столбцами
ID (int, primary key,
Date (datetime),
Num (int)
Я хочу разбить эту таблицу на 2 столбца: Date
и Num
.
Это то, что я делаю, чтобы разбить таблицу на 1 столбец (дата):
create PARTITION FUNCTION PFN_MonthRange (datetime)
AS
RANGE left FOR VALUES ('2009-11-30 23:59:59:997',
'2009-12-31 23:59:59:997',
'2010-01-31 23:59:59:997',
'2010-28-02 23:59:59:997',
'2010-03-31 23:59:59:997')
go
Ответы
Ответ 1
Плохая новость: Функция разделения должна быть определена в одном столбце.
Хорошая новость: Этот единственный столбец может быть сохраненным вычисленным столбцом, который представляет собой комбинацию из двух столбцов, которые вы 'пытаться разбивать на.
Ответ 2
Я нашел, что это было более легкое решение
select ROW_NUMBER() over (partition by CHECKSUM(value,ID) order by SortOrder) as Row From your_table
Ответ 3
Естественно, нет, вы не можете разбивать на два столбца в SQL Server.
Есть несколько вещей, которые вы могли бы сделать, иметь таблицу поиска, которую вы используете для извлечения, какое арбивное целое (разделение) каждое значение находится внутри, но у вас есть только 1000 разделов, поэтому они начнут занимать одно и то же пространство, Вычисляемый подход столбцов страдает этой же проблемой, у вас есть предел раздела 1k, скорее всего, вы его взорвите.
Я бы, вероятно, просто придерживался раздела даты и располагался прямо на 1-ом месяце, а не налево в последней части месяца.
Что вы намерены получить от второго значения раздела?