Эффективное добавление столбца в SQL Server. Добавление столбца sql


sql - Добавление столбца в оператор select в зависимости от наличия записи в другой таблице

Я пишу SQL-запрос, который хотел бы добавить столбец в набор записей, который имеет значение, основанное на существовании записи в другой таблице. У меня есть левое соединение, соединяющее таблицы, и я предполагаю, что мне нужно сделать какой-то поворот в моем SQL, но я не знаком с поворотом таблицы.

Мой существующий SQL

SELECT tabs.name,tabs.id AS tabid,tabs.sort,fields.id AS fieldid, fields.label FROM tabs INNER JOIN fields ON tabs.id = fields.tabid LEFT JOIN fields_reports ON fields_reports.fieldid = fields.id WHERE fields_reports.reportid = 57 GROUP BY fields.id ORDER BY tabs.sort, fields.id

Что произошло в SQL, так это то, что он вытаскивает поле (которое является ядром инструкции) и вкладки (которые являются категориями essentailly). Таблица fields_reports отображает поля в отчеты, которые я создаю.

Что мне нужно сделать, это добавить столбец в мой оператор, который говорит: если текущее поле имеет запись в таблице fields_reports с номером отчета, переданным в (57), тогда присвойте значение столбца 1, иначе 0.

Изменить: У меня есть еще одна проблема с запросом. В настоящий момент запрос только потянул поля, прикрепленные к одному отчету. Вместо использования случая есть способ, которым я могу сделать подзапрос, чтобы выбрать из таблицы fields_reports, чтобы я мог вытащить все поля, а затем добавить столбец к отчету?

Это запрос, который теперь извлекает записи, но только вытягивает одни поля отчетов

SELECT tabs.name,tabs.id AS tabid,tabs.sort,fields.id AS fieldid, fields.label, CASE WHEN fields_reports.id IS null THEN 0 ELSE 1 END AS inReport FROM fields INNER JOIN tabs ON tabs.id = fields.tabid LEFT JOIN fields_reports ON fields_reports.fieldid = fields.id WHERE fields_reports.reportid = 57 GROUP BY fields.id ORDER BY tabs.sort, fields.id

Сообщите мне, если я должен открыть для этого новый вопрос.

qaru.site

добавление описания столбца MS SQL Server

Кто-нибудь знает, как добавить описание в столбец SQL Server, запустив скрипт? Я знаю, что вы можете добавить описание при создании столбца с помощью SQL Server Management Studio.

Как это можно сделать, так, когда мои SQL-скрипты создают столбец, также добавляется описание для столбца?

Я бы сказал, что вы, вероятно, захотите сделать это, используя хранимую процедуру sp_addextendedproperty .

У Microsoft есть хорошая документация, но вы также можете посмотреть на эту ссылку:

http://www.eggheadcafe.com/software/aspnet/32895758/how-to-set-description-property-with-alter-table-add-column.aspx

Попробуй это:

EXEC sp_addextendedproperty @name = N'MS_Description', @value = 'Hey, here is my description!', @level0type = N'Schema', @level0name = 'yourschema', @level1type = N'Table', @level1name = 'YourTable', @level2type = N'Column', @level2name = 'yourColumn'; GO

Это работает для меня. Соответствующие аргументы обозначаются маленькими стрелками.

EXEC sys.sp_addextendedproperty @name=N'MS_Description' ,@value=N'Here is my description!' --<<<< ,@level0type=N'SCHEMA' ,@level0name=N'dbo' ,@level1type=N'TABLE' ,@level1name=N'TABLE_NAME' --<<<< ,@level2type=N'COLUMN' ,@level2name=N'FIELD_NAME' --<<<< EXEC sys.sp_addextendedproperty @name = N'MS_Description', @value = N'extended desription' , @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Table_1', @level2type = N'COLUMN', @level2name = N'asdf'

создать скрипт на таблице dbo.Table_1

В MS SQL Server Management Studio 10.0.55 самый простой способ:

  • Отображение столбцов таблицы в окне «Обозреватель объектов»
  • Щелкните правой кнопкой мыши интересующий столбец и нажмите кнопку «Изменить».
  • Посмотрите в окне «Свойства столбца» (в правом нижнем углу моего графического интерфейса) \
  • Посмотрите в разделе «Дизайнер таблиц»
  • Измените значение для строки «Описание»
  • Нажмите «x» в правом верхнем углу окна / вкладки изменения столбца
  • Ответ «y», когда он говорит, применит изменения

Если вы щелкните правой кнопкой мыши на своей таблице в окне «Проводник объектов» и выберите свойства, затем нажмите «Расширенные свойства», вы должны увидеть свой комментарий.

Обратите внимание, что если вы используете команду «Таблица сценариев как» для таблицы, вышеупомянутый столбец «Описание» по-прежнему не отображается в качестве комментария для столбца. Вместо этого он показывает дополнительный вызов sp_addextendedproperty после создания таблицы. Удовлетворительно.

sqlserver.bilee.com

performance - Эффективное добавление столбца в SQL Server

SQL Server - это ориентированная на строку база данных. Это отличается от базы данных, ориентированной на столбцы. Это означает, что в SQL Server все данные для данной строки хранятся вместе на диске. Возьмем пример:

Скажите, что у вас есть таблица Customer с тремя столбцами: FirstName, MiddleInitial и LastName. Тогда, скажем, у вас есть 3 записи в этой таблице для Jabba T. Hutt, Dennis T. Menace и George W. Bush.

В ориентированной на строку базе данных (например, SQL Server) записи будут сохранены на диске как таковые:

Джабба, Т, Хатт; Деннис, Т, Угроза; Джордж, У, Буш;

Напротив, база данных, ориентированная на столбцы, будет хранить записи на диске следующим образом:

Джабба, Деннис, Джордж; T, T, W; Хатт Уайнес, Буш;

Если столбцы сгруппированы вместо строк.

Теперь, когда вы добавляете столбец в таблицу в ориентированной на строку базе данных (например, SQL Server), новые данные для каждого столбца должны быть вставлены рядом с существующими строками, сдвигая строки, требующие много операции чтения/записи. Итак, если вы должны вставить новый столбец для префикса клиента, который по умолчанию имеет значение "Mr", это то, что вы получите:

Г-н, Джабба, Т, Хатт; Г-н, Деннис, Т, Угроза; Г-н, Джордж, У, Буш;

Как вы можете видеть, все исходные данные были сдвинуты вправо. С другой стороны, когда вы вставляете новый столбец, который по умолчанию имеет значение NULL, новые данные не должны помещаться в существующие строки. Таким образом, происходит меньшее смещение, требующее меньше операций чтения/записи на диске.

Конечно, это упрощение того, что происходит на диске. Есть другие вещи, которые следует учитывать при работе с индексами, страницами и т.д. Но это должно помочь вам получить изображение.

Для пояснения Я вовсе не предлагаю вам перейти к базе данных, ориентированной на столбцы, я просто помещаю эту информацию туда, чтобы помочь объяснить, что означало Row.

qaru.site