SELECT
tblEmployeeMaster.TeamName, SUM(tblData.Quantity) AS 'TotalQuantity'
FROM
tblData
INNER JOIN
tblEmployeeMaster ON tblData.EntryByHQCode = tblEmployeeMaster.E_HQCode
INNER JOIN
tblPhotos ON tblEmployeeMaster.TeamNo = tblPhotos.TeamNo
WHERE
IsPSR = 'Y'
GROUP BY
tblPhotos.TeamSort, tblPhotos.TeamNo, tblPhotos.Data,
tblEmployeeMaster.TeamName
ORDER BY
tblPhotos.TeamSort DESC, TotalQuantity DESC
Это возвращает
Используя это утверждение
select TeamName, count(TeamName) AS 'Head Count'
from dbo.tblEmployeeMaster
where IsPSR = 'Y'
group by teamname
Что возвращает
Я хотел бы объединить эти 2 запроса в 1, чтобы получить результат ниже.
Пробовал союз / союз все, но безуспешно :(
Любая помощь будет очень полезна.
Ваш первый запрос действительно возвращает указанный результат? Я ожидал исключения...
@jarlh Что не так с первым запросом?
@DavidG, предложение GROUP BY не соответствует списку SELECT, и мне трудно поверить, что оно возвращает указанный результат. (Тем не менее, SQL Server может, как ни странно, принимать строковый литерал в качестве псевдонима столбца вместо идентификатора, так что, возможно, это не вызывает ошибку?)
@jarlh Вам не нужно ВЫБИРАТЬ все из GROUP BY, и псевдоним строки работает нормально.
@DavidG, я знаю, но если нет, результат обычно содержит дубликаты.
@jarlh Вы сказали, что это вызовет ошибку
@DavidG, я знаю, я забыл о специальном MS SQL Server для строкового литерала в качестве псевдонима столбца. (Я ожидаю исключения...)
Вы можете просто использовать подзапрос следующим образом:
SELECT tblEmployeeMaster.TeamName, SUM(tblData.Quantity) AS 'TotalQuantity',
MAX(HEAD_COUNT) AS HEAD_COUNT, -- USE THIS VALUE FROM SUB-QUERY
CASE WHEN MAX(HEAD_COUNT) <> 0
THEN SUM(tblData.Quantity)/MAX(HEAD_COUNT)
END AS PER_MAN_CONTRIBUTION -- column asked in comment
FROM tblData INNER JOIN
tblEmployeeMaster ON tblData.EntryByHQCode = tblEmployeeMaster.E_HQCode INNER JOIN
tblPhotos ON tblEmployeeMaster.TeamNo = tblPhotos.TeamNo
-- FOLLOWING SUB-QUERY CAN BE USED
LEFT JOIN (select TeamName, count(TeamName) AS HEAD_COUNT
from dbo.tblEmployeeMaster
where IsPSR = 'Y' group by teamname) AS HC
ON HC.TeamName = tblEmployeeMaster.TeamName
where IsPSR = 'Y'
GROUP BY tblPhotos.TeamSort, tblPhotos.TeamNo, tblPhotos.Data,tblEmployeeMaster.TeamName
order by tblPhotos.TeamSort desc, TotalQuantity desc
Классика :) :) Не могли бы вы добавить еще один столбец, который делит общее количество / количество голов и показывает вклад на человека?
Обновил ответ. Обратитесь -- столбец задается в комментарии -- в коде
Ты классный :) :) :) Большое спасибо..... Копался 3 часа, а ты сделал это за минуту :)
Почему вы группируете все эти другие столбцы в своем первоначальном запросе, когда ни один из них не появляется в вашем
SELECT
?