2017-06-01 61 views
1

我試圖計算每個「母公司」多少「子公司」的工作,我想出了這樣的事情...創建與A組:查詢

select cs.contract_number, jd.Job_description, c.Parent_Company, 
     count(sub.subsidiary_company) 
from contracts cs 
    join Job jd 
     on jd.ID = cs.ID 
    join Company c 
     on cs.Company_ID = c.Company_ID 
    join Sub_Company sub 
     on c.Company_ID = sub.Prime 
group by cs.contract_number, jd.Job_description, c.Parent_Company; 

這是一個例子我正在尋找的結果... Table Structure

但是,我沒有得到我需要的結果。我試圖創建一個查詢,顯示每個「母公司」下爲每個「職位描述」工作的「子公司」的不同計數。你能協助嗎?謝謝。

+0

幫助我們爲您提供幫助 - 請分享您的表格結構,一些樣品數據,您獲得的樣品結果以及您試圖獲得的結果。 – Mureinik

+0

我希望這張圖片有所幫助。 – caa35

+0

@Mureinik此圖像幫助嗎? – caa35

回答

1

爲了更好的幫助您需要提供的表結構和樣本數據在這樣一個容易的使用格式爲:

-- Table structure and sample data 
DECLARE @contracts TABLE (Id int identity, contract_number varchar(100), Company_Id int); 
DECLARE @job TABLE (Id int identity, Job_description varchar(100)); 
DECLARE @Company TABLE (Company_Id int identity, parent_company varchar(100)); 
DECLARE @Sub_Company TABLE (Company_Id int, Parent_Company_Id int); 

INSERT @contracts(contract_number, Company_Id) 
    VALUES ('001122',1), ('009922',1), ('123ABC',2), ('XXXYYYZZZ',2); 
INSERT @job(Job_description) 
    VALUES ('Fun stuff'), ('Hard Stuff'), ('Dumb stuff'); 
INSERT @Company(parent_company) 
    VALUES ('A Co'), ('B Co'); 
INSERT @Sub_Company(Parent_Company_Id, Company_Id) 
    VALUES (1,10), (1,11), (1, 20), (1, 30), (2, 400), (2, 500); 

-- Select statements to review the data 
SELECT * FROM @contracts; 
SELECT * FROM @Company; 
SELECT * FROM @job; 
SELECT * FROM @Sub_Company; 

你可以複製/粘貼上面的代碼並在本地運行。

我試圖創建一個顯示的 「子公司」,對於每個 「職位描述」每個「母公司」下工作的重複計數的查詢。

你GROUP BY語句將是這樣的:

group by jd.Job_description, c.Parent_Company, cs.contract_number 

您的解決方案看起來東西這樣

-- Table structure and sample data 
DECLARE @contracts TABLE (Id int identity, contract_number varchar(100), Company_Id int); 
DECLARE @job TABLE (Id int identity, Job_description varchar(100)); 
DECLARE @Company TABLE (Company_Id int identity, parent_company varchar(100)); 
DECLARE @Sub_Company TABLE (Company_Id int, Parent_Company_Id int); 

INSERT @contracts(contract_number, Company_Id) 
    VALUES ('001122',1), ('009922',1), ('123ABC',2), ('XXXYYYZZZ',2); 
INSERT @job(Job_description) 
    VALUES ('Fun stuff'), ('Hard Stuff'), ('Dumb stuff'); 
INSERT @Company(parent_company) 
    VALUES ('A Co'), ('B Co'); 
INSERT @Sub_Company(Parent_Company_Id, Company_Id) 
    VALUES (1,10), (1,11), (1, 20), (1, 30), (2, 400), (2, 500); 

-- solution 
select jd.Job_description, c.Parent_Company, cs.contract_number, total = count(DISTINCT Sub.Company_Id) 
from @contracts cs 
join @job jd on jd.ID = cs.ID 
join @Company c on cs.Company_ID = c.Company_ID 
join @Sub_Company sub on c.Company_ID = sub.Parent_Company_Id 
group by jd.Job_description, c.Parent_Company, cs.contract_number ; 

更新我提供給包括正確的列中的樣本數據和更新示例數據看起來更加準確。接下來發佈一個屏幕截圖或者顯示你想要的結果。這樣做,你會很快得到很好的幫助。