Как СУММИТЬ Duration_Hours, когда это LEFT JOIN другой таблицы базы данных? - PullRequest
0 голосов
/ 14 июня 2019

Я хочу сгенерировать отчет, который суммирует общее количество рабочих часов для каждого сотрудника.

Ниже приведен мой SQL-запрос

SELECT WO_MaidName
      ,Maid_Name AS WO_selectMaidName
      ,Appointment_Duration
      ,Duration_Hours AS Appointment_selectDuration
FROM Appointments A
    LEFT JOIN Maid
        ON Maid_ID = WO_MaidName
    LEFT JOIN Duration
        ON Duration_ID = Appointment_Duration 
WHERE DATEPART(m, Appointment_DateTime) = DATEPART(m, DATEADD(m, -1, getdate()))
    AND DATEPART(yyyy, Appointment_DateTime) = DATEPART(yyyy, DATEADD(m, -1, getdate())) 
    AND (A.IsDelete = 0
        OR A.IsDelete IS NULL
        )
ORDER BY Appointment_ID DESC

Вывод следующий, который отображает только рабочие часыбез добавления этих двух значений

Как SUM Duration_Hours, когда это LEFT JOIN другой таблицы базы данных, так что отчет будетперечислить общее количество рабочих часов для каждого сотрудника?


Отредактировано: я пробовал этот запрос, но сообщаю мне следующее:

'Колонка' Maid.Maid_Name 'недопустима в списке выборасписок, потому что он не содержится ни в статистической функции, ни в предложении GROUP BY. '

SELECT WO_MaidName
      ,Maid_Name AS WO_selectMaidName
      ,Appointment_Duration
      ,SUM(Duration_Hours) AS Appointment_selectDuration
FROM Appointments A
    LEFT JOIN Maid
        ON Maid_ID = WO_MaidName
    LEFT JOIN Duration
        ON Duration_ID = Appointment_Duration 
WHERE DATEPART(m, Appointment_DateTime) = DATEPART(m, DATEADD(m, -1, getdate()))
    AND DATEPART(yyyy, Appointment_DateTime) = DATEPART(yyyy, DATEADD(m, -1, getdate())) 
    AND (A.IsDelete = 0
        OR A.IsDelete IS NULL
        )
GROUP BY WO_MaidName
ORDER BY Appointment_ID DESC

Как решить эту проблему?

1 Ответ

0 голосов
/ 14 июня 2019

Ошибка, которую вы получаете, говорит вам, что делать:

'Столбец Maid.Maid_Name' недопустим в списке выбора , поскольку он не содержится ни в статистической функцииили предложение GROUP BY. '

Все столбцы в запросе select, которые выполняют агрегацию neet для агрегирования или в group by.Вам нужно добавить Maid.Maid_Name и Appointment_Duration к вашему group by.

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