我正在试着有一个这样的表:
Manager Expert Adminis. Staff
Dept A.P. | C.P. A.P. | C.P. A.P. | C.P.
Management 1 1 1 0 1 1
Accounting 1 1 1 1 0 0
IT 1 1 2 1 0 0A.P. =可用位置号C.P. =当前位置号
A.P.来自名为Positions的表:
[Positions](
[id] [numeric](19, 0) IDENTITY(1,1) NOT NULL,
[NumOfAvailablePositions] [int] NULL,
[PositionType] [varchar](255) NULL,
[DepartmentId] [numeric](19, 0) NULL
)C.P.是Title表中的Title_Names计数:
[Title](
[id] [numeric](19, 0) IDENTITY(1,1) NOT NULL,
[Title_Name] [varchar](50) NOT NULL,
[Department_Id] [numeric](19, 0) NULL,
[Position_Type] [varchar](255) NULL,
)总而言之,我试图得到这两个查询的结果:
SELECT DepartmentId, PositionType, NumOfAvailablePositions
FROM Positions
SELECT Department_Id, Position_Type, Count (Position_Type) as CurrentPositions
FROM Title group by Department_Id, Position_Type并将结果连接到一个表中(如上所述)。
我尝试使用以下脚本连接这些表:
SELECT Department_Id, PositionType, Count(Position_Type) as PositionCountTitle, Positions.DepartmentId, Positions.NumOfAvailablePositions
FROM Title, Positions
GROUP BY Position_Type, Department_Id, Positions.DepartmentId, Positions.NumOfAvailablePositions
HAVING Title.Department_Id = Positions.DepartmentId但它产生了错误的结果。在Jasper IReports中,你有什么建议来解决这个问题吗?
发布于 2012-07-03 22:42:58
尝试将您的FROM Title, Positions替换为
FROM Title INNER JOIN Positions ON Title.[Position_Type]=Positions.[Position_Type]发布于 2012-07-03 22:50:53
可能有一种方法可以不用使用子查询来做到这一点,但我发现这通常是理解查询的好的第一步。
SELECT title.Department_Id,
(SELECT NumOfAvailablePositions FROM POSITIONS WHERE Department_Id = position.Department_Id AND PositionType = 'Expert') as expert_ap,
(SELECT COUNT(*) FROM Title WHERE Department_Id = title.Department_Id AND PositionType = 'Expert') as expert_cp,
(SELECT NumOfAvailablePositions FROM POSITIONS WHERE Department_Id = position.Department_Id AND PositionType = 'Adminis. Staff') as admin_ap,
(SELECT COUNT(*) FROM Title WHERE Department_Id = title.Department_Id AND PositionType = 'Adminis. Staff') as admin_cp,
(SELECT NumOfAvailablePositions FROM POSITIONS WHERE Department_Id = position.Department_Id AND PositionType IS NULL) as rest_ap,
(SELECT COUNT(*) FROM Title WHERE Department_Id = title.Department_Id AND PositionType IS NULL) as rest_cp,
FROM Title title, Positions position
WHERE Title.Department_Id = Positions.DepartmentId但是,这个查询有一个固有的问题,如果Position表有Title表没有的部门,那么它将永远不会在查询中返回。如果您的情况不是这样,那么这就不是问题。
https://stackoverflow.com/questions/11313222
复制相似问题