【发布时间】:2014-09-01 23:26:11
【问题描述】:
我在运行/配置 Microsoft SQL Server 查询时遇到问题,查询如下:
SELECT
ps.WeekIncluded AS PaidWeeks,
PayD.PayDate AS PayDates,
ps.PayYear AS PYear,
months.PMonth,
(SELECT sum(DayPay) FROM Shifts GROUP BY WeekNumber)
FROM dbo.PayStructure ps
JOIN dbo.Months Months
ON ps.MonthID = months.ID
JOIN dbo.PayDates PayD ON ps.MonthID = PayD.MonthID
Group BY ps.MonthID
这是尝试做的,是使用三个表创建一个视图(不包含在 sn-p 中),包括选择 DayPay in Shifts 和 GroupBy 的总和,以便稍后加入并通过 weeknumber 加入到指定月份。不幸的是,我得到了:
选择列表中的“dbo.PayStructure.WeekIncluded”列无效 因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句。
& 使用:
SELECT
ps.WeekIncluded AS PaidWeeks,
PayD.PayDate AS PayDates,
ps.PayYear AS PYear,
months.PMonth,
(SELECT sum(DayPay) FROM Shifts)
FROM dbo.PayStructure ps
JOIN dbo.Months Months
ON ps.MonthID = months.ID
JOIN dbo.PayDates PayD ON ps.MonthID = PayD.MonthID
返回:
每个选择等于:60.36 我想要得到的是:
一月 - 空
2 月 - 空
三月 - 空
4 月 - 空
五月 - 空
六月 - 空
7 月 - 空
8 月 - 空
9 月 - 60.36
10 月 - 空
12 月 - 空
由于没有这些周数/月的数据输入,因此 11/12 个月为空
按要求。 Dbo.Shifts
Dbo.PayStructure
Dbo.Months
尝试过:
SELECT
ps.WeekIncluded AS PaidWeeks,
PayD.PayDate AS PayDates,
ps.PayYear AS PYear,
SUM(Sh.DayPay)
FROM dbo.PayStructure ps
LEFT JOIN dbo.Months Months
ON ps.MonthID = months.ID
LEFT JOIN dbo.PayDates PayD
ON ps.MonthID = PayD.MonthID
LEFT JOIN dbo.Shifts Sh
ON Sh.WeekNumber = ps.WeekIncluded
GROUP BY Sh.WeekNumber
【问题讨论】:
-
你能发布一些包含一些行的示例输入表吗?
-
@BoratSagdiyev 请查看引用表格的屏幕截图更新
标签: sql sql-server