Member 12363094 Ответов: 4

Можем ли мы сделать сумму различных столбцов в MS SQL server


Я хочу сделать сумму данных разных столбцов

Что я уже пробовал:

выберите (column1+column2+column3) как "column4"
но в этом случае я не получаю надлежащего o/P.
например: column1 data=7,8
сведения столбец2=7.0
сведения столбец3= 8.9
десять o/P идет как 7.8.7.9.8.9

phil.o

Какие типы данных являются column1, column2 и column3?

Member 12363094

ОО это тип варчара

4 Ответов

Рейтинг:
26

CPallini

Поскольку ваши операнды являются строками, + (Конкатенация строк) (Transact-SQL)[^] используется оператор.
Вы должны преобразовать операнды в числа, чтобы использовать арифметику + (Add) (Transact-SQL)[^] оператор.
Видеть Приведение и преобразование (Transact-SQL)[^].


Кстати: использование численный типы данных (вместо varchars) для удержания числа на мой взгляд, это выглядит более естественно.


Member 12363094

тогда я должен преобразовать varchar в float?

CPallini

Да, или десятичный в зависимости от ваших потребностей.

Рейтинг:
2

OriginalGriff

Похоже, у вас есть проблема с вашей БД: эти значения хранятся в виде строковых данных (VARCHAR или NVARCHAR) вместо числовых полей. В результате строки добавляются как строки, а не как числа.

В то время как вы могли бы использовать CONVERT для каждого из столбцов, это Клудж вокруг серьезной проблемы. Измените свою БД: всегда храните значения в наиболее подходящей форме: INT или FLOAT для чисел, DATE или DATETIME для дат, и только строковые данные идут в Столбцах NVARCHAR или VARCHAR. Если вы этого не сделаете, это не единственная проблема, которую он вам даст...


Рейтинг:
16

Karthik_Mahalingam

Обратитесь к решениям 1 и 2 для объяснения

select  (CAST( column1 as float) + CAST( column2 as float)+ CAST( column3 as float)) as 'column4' from YourTable


Рейтинг:
0

Daniel Jones

SELECT 
   column1,
   column2,
   column3,
   (column1 + column2 + column3) as 'column4'
FROM table