首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试联接Jasper报表中的2个查询

尝试联接Jasper报表中的2个查询
EN

Stack Overflow用户
提问于 2012-07-03 22:34:23
回答 2查看 2.5K关注 0票数 1

我正在试着有一个这样的表:

代码语言:javascript
复制
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    0

A.P. =可用位置号C.P. =当前位置号

A.P.来自名为Positions的表:

代码语言:javascript
复制
[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计数:

代码语言:javascript
复制
[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,
    )

总而言之,我试图得到这两个查询的结果:

代码语言:javascript
复制
SELECT   DepartmentId, PositionType, NumOfAvailablePositions  
FROM Positions 

SELECT Department_Id, Position_Type, Count (Position_Type) as CurrentPositions
FROM Title group by Department_Id, Position_Type

并将结果连接到一个表中(如上所述)。

我尝试使用以下脚本连接这些表:

代码语言:javascript
复制
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中,你有什么建议来解决这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-03 22:42:58

尝试将您的FROM Title, Positions替换为

代码语言:javascript
复制
FROM Title INNER JOIN Positions ON Title.[Position_Type]=Positions.[Position_Type]
票数 2
EN

Stack Overflow用户

发布于 2012-07-03 22:50:53

可能有一种方法可以不用使用子查询来做到这一点,但我发现这通常是理解查询的好的第一步。

代码语言:javascript
复制
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表没有的部门,那么它将永远不会在查询中返回。如果您的情况不是这样,那么这就不是问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11313222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档