Member 14587396 Ответов: 1

Как вычислить сумму нескольких столбцов выбранной строки с помощью запроса?


У меня есть база данных доступа к таблице сотрудников со столбцами "Employee_ID", "базовая зарплата", "HRA", "TA&DA", и я хочу суммировать эти три столбца "базовая зарплата", "HRA", "TA&DA" и получить общую сумму в текстовом поле.
Запрос, который я написал, только добавляет значения этих трех столбцов, но не суммирует их.
Пожалуйста, есть ли что-то, что я сделал неправильно?
Я новичок в программировании, пожалуйста.
Спасибо.

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

Private Sub CalculateGross()

        Dim gross As Double
        'Dim net As Double
        'Dim tax As Double

        If String.IsNullOrEmpty(txtSalaryID.Text) Then MsgBox("Sorry, cannot perform Query. String is Null.") : txtSalaryID.Focus() : Exit Sub

        EmpMain.AddParam("@SalID", txtSalaryID.Text)

        EmpMain.ExecQuery("SELECT SUM([Basic Salary]+ HRA + [TA&DA]) AS Total FROM Employee WHERE Employee_ID = @SalID ")

        If NoErrors(True) = False OrElse EmpMain.RecordCount < 1 Then txtSalaryID.Clear() : txtSalaryID.Focus() : Exit Sub

        EmpMain.DBcon.Open()
        EmpMain.Reader = EmpMain.DBcmd.ExecuteReader

        If EmpMain.Reader.Read() Then
            If EmpMain.Reader("Total") Then
                gross = EmpMain.Reader("Total")
            End If
        End If
        txtGrossPay.Text = gross

        EmpMain.DBcon.Close()

    End Sub

ZurdoDev

Сумма(поле 1) + сумма(поле 2) ... нет?

1 Ответов

Рейтинг:
12

Afzaal Ahmad Zeeshan

Я считаю, что вам нужно использовать этот запрос,

-- Assuming
-- | EmployeeId | Name | JoinDate | ... | [Basic Salary] | HRA | [TA&DA] | ...
SELECT ([Basic Salary] + HRA + [TA&DA]) AS 'Total' 
FROM Employee 
WHERE Employee_ID = @SalID;
Применение агрегатной функции (SUM() в этом случае) имеет мало смысла, зачем вам распространять Basic Salary служащего по всему столу, а потом группа это? Если вы хотите получить группировку значений, то, возможно, SUM() отчасти это имеет смысл, но ... WHERE запрос не подходит для группы, так как вы можете применить что-то вроде, WHERE Basic Salary > 1000 и т.д.

Во—вторых, пожалуйста, назовите таблицы лучше-TA_DA будет иметь больше смысла. Аналогично для Basic_Salary, избегайте интервалов и специальных символов/имен. Вы можете знать, что вы сделали, но другие DBA(ы) всегда будут готовы к вызову, чтобы сломать вещи. :-)

Проверять эта тема[^] чтобы узнать о других способах получения суммы столбцов для записи.


Member 14587396

@Afzaal, спасибо за вклад, но он все еще не делает то, что я хочу.
Он по-прежнему добавляет значения для каждого столбца, а не суммирует их.
Вот что я имею в виду;
Базовая зарплата =10, HRA=5,TA DA=5.
Сумма должна быть 20, но она выводит 1055.
Почему это так?

Maciej Los

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

Afzaal Ahmad Zeeshan

Измените тип данных столбца на числовой тип вместо символьного.

Maciej Los

5ed!

Afzaal Ahmad Zeeshan

Спасибо тебе, Мацей!

Member 14587396

Да, вы все правы. Мой запрос сработал бы, если бы не эта глупая ошибка.
Тип данных моих столбцов был текст, а не цифры.
Спасибо @Afzaal и @Maciej за помощь.