2017-03-09 138 views
0

我怎麼能合併低於2次的查詢1第4欄之間列計數2和3SQL查詢合併成2 1

Select DISTINCT ASSN, COUNT(REAPING_GROUP_CODE) as TotalGroups 
FROM ReapingGroups 
GROUP BY ASSN 
Order by ASSN 


Select ASSN, COUNT(REAPING_GROUP_CODE) as Groups 
FROM ReapingGroups 
WHERE EXISTS (Select * FROM DeliveryTons where reaping_code = REAPING_GROUP_CODE AND remarks = '') 
GROUP BY ASSN 
+0

更新您的問題添加適當的數據樣本和預期的結果..請 – scaisEdge

+0

家庭作業?你有什麼嘗試?當你發佈你的代碼時,請解釋什麼是不工作? –

回答

0

我不會嘗試寫一個具體的例子來計算百分比,因爲在寫這篇文章的時候,你還沒有表現出任何的樣本數據或任何東西,但這裏是你可以用一個有條件的計數和無條件計數合併成一個單一查詢的一般技術:

select 
    FieldName, 
    count(1) -- Unconditional count 
    sum(case when /*condition*/ then 1 else 0 end) -- Conditional count 
from 
    TableName 
group by 
    FieldName; 

而且,就像旁邊一樣:您的第一個查詢中的DISTINCT是多餘的,因爲您已經在同一個字段上進行了分組,這足以保證每個唯一的ASSN值在結果集中只有一條記錄。

1

這裏一個黑客位,但它應該得到你在找什麼:

select ASSN, sum(TotalGroups) as TotalGroups, sum(CAST(Groups AS DECIMAL))/sum(CAST(TotalGroups AS DECIMAL))*100.00 as Percentage 
from 
(
    (
    Select DISTINCT ASSN, COUNT(REAPING_GROUP_CODE) as TotalGroups, 0 as Groups 
    FROM ReapingGroups 
    GROUP BY ASSN 
) 
    union all  
    (
    Select ASSN, 0 as TotalGroups, COUNT(REAPING_GROUP_CODE) as Groups 
    FROM ReapingGroups 
    WHERE EXISTS (Select * FROM DeliveryTons where reaping_code = REAPING_GROUP_CODE AND remarks = '') 
    GROUP by ASSN 
) 
) NamedSubQuery 
group by ASSN 
order by ASSN; 
+0

Im得到一個無效的列名'ASSN'無效的列名TotalGroups,組以及在底部組附近的語法不正確 – ivias

+0

嗯,它告訴你那些無效列在哪一行?這樣做沒有編輯自己,因爲我沒有訪問您的查詢中的表。我可能錯誤地輸入了一些內容,但總的想法是使用聯合將兩個查詢形成單個數據集。然後操縱您的數據以獲取百分比,並使用該數據集中的選擇重新正確分組。 – user681574

+0

Msg 156,Level 15,State 1,Line 17 關鍵字'group'附近的語法不正確。 – ivias