Добавление функции в столбец sql для вычисления суммы столбцов в этой строке - PullRequest
1 голос
/ 05 января 2012

У меня есть таблица sql, которая имеет пять столбцов

  1. Число 1 с плавающей запятой
  2. Число 2 с плавающей запятой
  3. Всего с плавающей запятой
  4. Положительный с плавающей запятой
  5. Отрицательное число с плавающей запятой

Когда я вставляю данные в Count1 и Count2, Total должен автоматически заполняться суммой count1 + count 2, а положительный столбец должен отображать, сколько значений положительно в этой строке иОтрицательный столбец должен отражать количество отрицательных значений в этой строке.

Я использую SQL Server 2008.

Как добавить функцию в 3 столбца для вычисления данных при вставке значений встолбец 1 и столбец 2.

Может ли кто-нибудь предоставить фрагмент кода о том, как это сделать.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 05 января 2012

Просто используйте несколько вычисляемых столбцов:

CREATE TABLE [dbo].[Table](
[Count1] [float] NOT NULL,
[Count2] [float] NOT NULL,
[Total]  AS ([Count1]+[Count2]),
[Positive]  AS (case when [count1]>(0) then when [count2]>(0) then (2) else (1) end  case when [count2]>(0) then (1) (0) end end),
[Negative]  AS (case when [count1]<(0) then case when [count2]<(0) then (2) else (1)     end else case when [count2]<(0) then (1) else (0) end end)
) ON [PRIMARY]
1 голос
/ 05 января 2012

Вместо того, чтобы иметь таблицу с вычисленными значениями, вы должны создать View (с дополнительными вычисляемыми столбцами). Выбор в представлении по большей части идентичен действию с реальной таблицей.

Представления легко доступны из элементов базы данных в Sql Server Management Studio, а содержит документацию CREATE VIEW .

1 голос
/ 05 января 2012

Вы можете использовать триггер SQL FOR INSERT, как в следующем примере: SQL Server 2008 - Помощь при написании простого триггера INSERT

Или вы можете выполнить этот расчет в логике своего приложения, а затем записать все в базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...