Добавление значений в двух столбцах diff в ms доступ с помощью SQL-запроса - PullRequest
3 голосов
/ 23 июля 2011

Эй, мне было интересно, что вы знаете, как можно использовать «-» для вычитания в части запроса SELECT. Так вы также можете использовать "+", чтобы добавить? Я пробовал это, и вместо сложения значений вместе это делает это 123 + 0.28 = 1230.28, это может иметь какое-либо отношение к числу, находящемуся в текстовом формате? Но я никогда не менял формат с того момента, когда использовал «-», и это сработало. Спасибо

мой код:

INSERT INTO Table( Question, Calculation)

SELECT DISTINCT 'Addition' AS Question,(T2.Calculation + T1.Calculation) AS Calculation

FROM Some_Table T2, Some_Table T1

ORDER BY T2.Question;

Ответы [ 4 ]

4 голосов
/ 23 июля 2011

Это может интерпретироваться + как конкатенация строк между a и b. Попробуйте "(a - 0) + (b - 0)", чтобы вызвать интерпретацию как числа.

4 голосов
/ 23 июля 2011

Если T2.Calculation и T1.Calculation являются текстовыми типами данных, используйте функцию Val () для преобразования их в числа перед добавлением.

(Val(T2.Calculation) + Val(T1.Calculation)) AS Calculation

Редактировать : Когда вы используете оператор минус с двумя текстовыми значениями (как в "2" - "1"), Access преобразует текстовые значения в их числовые эквиваленты, если это возможно. Однако, если любое из текстовых значений не представляет действительное число, оператор минус выдаст ошибку «Несоответствие типов» ... как в "2" - "hans"

Оператор плюс работает по-разному - с двумя текстовыми значениями он попытается объединить их, как если бы вы использовали оператор объединения (&) вместо оператора сложения (+) ... "2" + "1" даст вам «21» в качестве текстового значения, а не число 3. Таким образом, в данном конкретном случае "2" + "1" эквивалентно "2" & "1".

Важное различие между операторами сложения и конкатенации заключается в том, когда одним из значений является Null. "2" + Null возвращает ноль. Но "2" & Null дает "2".

3 голосов
/ 23 июля 2011

да, вы можете использовать '+', чтобы сложить два числа вместе.

SELECT table1.Field1, table1.Field2, Field1+field2 As SumOfFields
FROM table1;

Field1  Field2  SumOfFields
1       2       3
2       3       5

EDIT: Если у вас есть строки, которые вы хотите добавить вместе, вам нужно преобразовать поля в число: - поскольку было указано, что CLng не поможет OP. Он был изменен на CDbl для учета десятичного числа.

SELECT table1.Field1, table1.Field2, CDbl(Field1)+CDbl(field2) As SumOfFields
FROM table1;
0 голосов
/ 04 декабря 2014

Просто добавьте к формуле 0+, и она будет знать, что вы говорите числами, а не строками:

Вместо [A]+[B]+[C] ставьте 0+[A]+[B]+[C]

...