У меня есть таблица с полем, назовите ее «оценка». Можно ли написать SQL, который принимает значение в каждом поле «score», вводит значение в формулу, тогда вывод из формулы записывается в другое поле. У меня нет опыта использования формул в SQL, и я не знаю, возможно ли это. Любой базовый пример, если это выполнимо, будет полезен.Пример SQL Server SQL, который использует формулу
ответ
Довольно неопределенный вопрос, но вот общая идея.
UPDATE MyTable SET FormulaOutput = HomeScore + AwayScore
Эта "формула" просто складывает 2 баллов вместе
Я полагаю, вы можете также вычислить "распространение", как это:
UPDATE MyTable SET Spread = MAX (HomeScore, AwayScore) - MIN (HomeScore, AwayScore)
Да, это возможно, но почти всегда вы не хотите хранить вычисленное поле в базе данных, так как это означает, что ваша база данных неправильно нормализована.
Вместо этого вычисляйте значение, когда вы запрашиваете его, добавив дополнительный производный столбец в свой оператор select.
Исключением из этого является необходимость выполнения трудоемких вычислений, и в этом случае вы можете захотеть сохранить производное значение в базе данных. Хороший способ сделать это - использовать триггеры для обновления значения при изменении одного из входов или выполнить процедуру на временном интервале для обновления всех производных значений во всей таблице.
Вычисляемые столбцы могут быть постоянными, а также индексированными представлениями. Я бы не использовал триггеры для обеспечения целостности и согласованности данных. – Lucero
Это, безусловно, вариант, но вы должны заметить, что вычисленные столбцы могут использовать значения только в других столбцах в одной таблице и не могут включать подзапросы. http://msdn.microsoft.com/en-us/library/ms191250.aspx Я ссылался на «трудоемкий расчет», который, на мой взгляд, подразумевает * как минимум * один подзапрос, возможно, больше. Были ли у вас какие-то другие трудоемкие вычисления, которые не требуют подзапросов? Можете ли вы привести пример? –
UPDATE OrderLine SET
TotalPrice = UnitPrice * Quantity
Все.
Это называется computed column - они поддерживаются:
- таблиц
- ЗЕЬЕСТ
- Просмотров
Вместо того, чтобы хранить его, я бы посоветовал вам, чтобы вычислить его в режиме реального времени по запросу или как computed column или использовать indexed view, если производительность слишком медленная.
- 1. Формат DateTime, который использует SQL Server
- 2. Пример SQL SERVER с флажком
- 3. Как хранить математическую формулу в SQL Server
- 4. SQL-пример, который не работает
- 5. SQL Server не использует индекс
- 6. SQL Server 2005 использует запрос? который не работает в SQL Server 2012
- 7. Как написать запрос в SQL Server, который использует Regex
- 8. Необходимо ускорить SQL Server SP, который использует системные метаданные
- 9. Пример трехзначной логики в SQL Server
- 10. SQL Server Где заключен пример дела?
- 11. SQL Server Update Query не использует индекс
- 12. Написание SQL-запроса, который использует count
- 13. Пример запроса связанного сервера SQL Server
- 14. SQL Server 2005 db_denydatawriter пример запроса
- 15. Пример реального уровня уровня изоляции SQL Server
- 16. Пример дампа База данных SQL Server
- 17. Пример пространственных данных для Sql Server 2008
- 18. Где пример данных Microsoft SQL Server?
- 19. SQL Server Full-Text Rankings Пример
- 20. SQL запрос не использует доступный индекс (SQL Server 2008)
- 21. Почему SQL Server не использует порт 1521
- 22. SQL Server 2012 не использует журнал транзакций
- 23. Почему SQL Server не использует мой индекс?
- 24. Sql - получить предыдущий заказ, который использует элемент
- 25. Как использовать подзапрос sql, который использует count
- 26. Ускорение запроса sql, который использует существует
- 27. Упростить SQL-запрос, который использует `row_to_json`
- 28. SQL без WHERE, который использует столбец ключей
- 29. SQL SUM в PIVOT, который использует MAX
- 30. C# SQL Login, который использует некоторые аутентификации
спасибо всем ... не знал, что это было возможно, я принял человека с самым низким счетом, надеюсь, что все в порядке, потому что все отзывы были потрясающими, спасибо много – bmw0128