разница между двумя столбцами в таблице SQL - PullRequest
0 голосов
/ 03 октября 2019

Я хочу разницу между двумя столбцами в таблице, моя таблица выглядит следующим образом:

SecurityID      High        Low     
918         15405.00000 15180.00000 
918         15500.00000 15240.00000 
918         15690.00000 15425.00000 

Я хочу таблицу:

SecurityID      High        Low     difference
918         15405.00000 15180.00000 15405.00000-15180.00000=225.0000
918         15500.00000 15240.00000 15500.00000-15240.00000=260.0000
918         15690.00000 15425.00000 15690.00000-15425.00000=265.0000

, пожалуйста, помогите мне, я хочу разницу между двумя столбцами

Ответы [ 3 ]

0 голосов
/ 03 октября 2019

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

Допустим, таблица называется fred.

Этого можно добиться, введя следующую команду alter table ...

alter table fred
add difference as cast(high as varchar(10)) + '-' + cast(low as varchar(10)) + '=' + cast(high - low as varchar(10));

Это добавит вычисляемый столбец с именем разность. В этом столбце таблицы не будет сохранено никакого физического значения, вместо этого SQL Server будет вычислять значение этого столбца на основе формулы и двух других значений каждый раз, когда вы выполняете оператор выбора. (Это приведет к очень небольшому снижению производительности).

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

alter table fred
add difference as cast(high as varchar(10)) + '-' + cast(low as varchar(10)) + '=' + cast(high - low as varchar(10)) persisted;

Вместо значения, вычисляемого при выдаче команды выбора, оно будет рассчитываться при обновлении High или Low. (Никаких накладных расходов на производительность при выборе, но немного больше при вставке или обновлении).

Дополнительную информацию о вычисляемых столбцах можно найти по адресу:
https://docs.microsoft.com/en-us/sql/relational-databases/tables/specify-computed-columns-in-a-table?view=sql-server-2017

0 голосов
/ 03 октября 2019

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

Select
    SecurityID,
    High,
    Low,
    cast(High as varchar(25)) + '-' + cast(Low as varchar(25)) + ' = ' + cast(High - Low as varchar(25)) as Results 
From TableA
0 голосов
/ 03 октября 2019

Ваш запрос должен выглядеть примерно так:

 Select SecurityID, High,Low, (High-Low) AS difference FROM yourTable

Вы можете узнать больше о: Арифметических операторах

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