вычитание col2 из col1 - PullRequest
       1

вычитание col2 из col1

1 голос
/ 10 марта 2011

Можно ли рассчитать значения выходных столбцов?

Например, если у меня есть следующее

select col1, col2
from table1

Без использования хранимой процедуры можно ли что-то сделатьвот так

псевдокод

select col1 as figure1, col2 as figure2, figure2 - figure1
from table1

РЕДАКТИРОВАТЬ 1:

Единственная причина, по которой я пытался не делать col2 - col1, заключалась в том, что col1 иcol2 уже созданы с помощью вычислений, и я не хотел удваивать вычисления.

Ответы [ 8 ]

3 голосов
/ 10 марта 2011

Вы не можете использовать псевдонимы напрямую. Но вы можете использовать cte или подзапрос

;with cte as
(
  select
    col1 as figure1,
    col2 as figure2
  from table1
)
select
  figure1,
  figure2,
  figure2-figure1 as figure3
from cte
3 голосов
/ 10 марта 2011

Вы можете сделать либо ..

Select col1 as figure1, col2 as figure2, (col2-col1) as figure3
from table1

, либо

select figure1, figure2, (figure2-figure1) as figure3
from 
(
select col1 as figure1, col2 as figure2
from table1
)

Рисунок 1 и Рисунок 2 являются псевдонимами, поэтому они доступны только для запроса выше.Они не являются фактическими столбцами в таблице.

Если это ваше фактическое требование, вам определенно не нужны хранимые процедуры.

2 голосов
/ 10 марта 2011

Конечно.

select col1 as figure1, col2 as figure2, col1 - col2 as subtractions from table1
2 голосов
/ 10 марта 2011

Вы можете сделать это:

select col1, col2, col1 - col2 
from table

Не нужен сохраненный процесс.

Это предполагает, что оба столбца относятся к одному и тому же типу, в противном случае вам может потребоваться привести их заранее. Да, и столбцы должны иметь некоторый числовой тип данных - вычитание текста из varchars обычно не заканчивается хорошо ...

1 голос
/ 10 марта 2011

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

select col1 as figure1, col2 as figure2, col1 - col2 as result 
from table1
0 голосов
/ 10 марта 2011
select col1 as figure1, col2 as figure2, col2 - col1 as figure3 
from table1

определенно сделает свое дело, но, чтобы прояснить ситуацию, это вопрос с подвохом; -)

0 голосов
/ 10 марта 2011

Проще говоря, Да.

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

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

0 голосов
/ 10 марта 2011

Зависит от типов данных, но это должно быть возможно (при условии, что это целые числа или что-то, над чем вы можете выполнить свою операцию):

SELECT col1, col2, col1-col2 as 'Variance'
FROM Mytable
Where Conditions
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...