Установить поле порядка сортировки на основе алфавитного порядка другого поля

Недавно я добавил пару полей в некоторые таблицы в моей базе данных (SQL Server 2005), чтобы пользователи могли настраивать порядок сортировки ряды. Я следовал этому шаблону для всех таблиц:

-- Alter the InvoiceStatus table
ALTER TABLE [dbo].[InvoiceStatus] ADD [Disabled] bit NOT NULL DEFAULT 0
GO
ALTER TABLE [dbo].[InvoiceStatus] ADD [SortOrder] int NOT NULL DEFAULT 0
GO
-- Use the primary key as the default sort order
UPDATE [dbo].[InvoiceStatus]
   SET [SortOrder] = [InvoiceStatusId]
GO

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

Используя приведенную выше таблицу в качестве примера (в которой есть текстовое поле [InvoiceStatusName ] ), есть ли похожий красивый и короткий запрос, который я мог бы написать, чтобы использовать алфавитный порядок [InvoiceStatusName] в качестве порядка сортировки по умолчанию?

Обновление:
На вопрос уже дан ответ, но некоторые указали Я понял, что это решение может быть не идеальным, поэтому я просто хочу добавить контекст для будущих ссылок. Это старая система (не устаревшая, но она существует уже несколько лет), которая используется в нескольких разных местах.

В приложении есть несколько списков / раскрывающихся списков с вашим типичным типом "статуса" (например, статус счета , статус заказа , тип клиента и т. д.). Когда система была впервые написана, это были стандартные значения, которые использовались повсюду (не предполагалось, что их можно будет изменить), но некоторые пользователи начали запрашивать возможность добавлять новые статусы, удалять те, которые больше не используются, и указывать собственный порядок сортировки (один статус может использоваться чаще, и поэтому неплохо иметь его в верхней части списка) .

Самый простой способ, который я нашел для этого (без необходимости возиться со старым кодом), - это добавить два новых поля, Disabled и SortOrder , чтобы все соответствующие таблицы. Поле Disabled используется для «скрытия» неиспользуемых типов (их нельзя удалить из-за ссылочной целостности, а также необходимо сохранять значение, которое они содержат), а SortOrder есть поле, чтобы пользователи могли указать свой собственный порядок сортировки. Поскольку все соответствующие таблицы также используют эти же два столбца, Было очень легко создать простой интерфейс для обработки сортировки (и отключения) обычным способом.

5
задан Julian 2 December 2010 в 12:28
поделиться