2012-07-03 45 views
1

我想有一個像這樣的表:試圖加入2個查詢碧玉報告

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](
    [id] [numeric](19, 0) IDENTITY(1,1) NOT NULL, 
    [NumOfAvailablePositions] [int] NULL, 
    [PositionType] [varchar](255) NULL, 
    [DepartmentId] [numeric](19, 0) NULL 
    ) 

和C.P。從標題表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有什麼建議可以解決這個問題嗎?

回答

1

嘗試更換您的FROM Title, Positions

FROM Title INNER JOIN Positions ON Title.[Position_Type]=Positions.[Position_Type] 
+0

感謝您的回覆。但它沒有產生相同的結果,它沒有計算Position_Type – lamostreta

+0

對不起,我不知道我昨天做了什麼錯誤,但我現在再次嘗試您的查詢它的工作原理!非常感謝。 – lamostreta

0

可能有辦法使用子查詢與做出來的,但我發現它通常在得到你的頭周圍的查詢的第一步。

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 

沒有與此查詢的固有問題,但如果職位表有標題表沒有,它永遠不會在查詢中返回一個部門。如果這不是你的情況,那麼這不是問題。

+0

感謝您的回答。但它沒有產生正確的結果.. – lamostreta