2016-07-10 91 views
-3

我有一個效率表具有以下字段SQL集團多列和計算

EmpName Client Sclient BillGrp WkdDate 
KK  Parallon Atlanta IP  12-Jul-16 
KK  Kiwitek Ozark  OP  11-Jul-16 
JJ  Parallon Atlanta OP  10-Jul-16 
JJ  Kiwitek Ozark  IP  11-Jul-16 

我需要的是這樣的

EmpName Client BillGrp Count 
KK  Parallon IP  2 
JJ  Parallon OP  2 

總之必須有每個EmpName,只有一個入口具有該EmpName的最大條目的客戶端和BillGrp將與計數字段中的總計數一起返回

+0

'選擇EmpName,客戶端,BillGrp,計數(1)來自...集團EmpName,客戶,BillGrp' –

+0

你有試過任何東西嗎? – Damon

+0

感謝哥們..它的工作 –

回答

0
SELECT EmpName, Client, BillGrp, COUNT(*) AS `count` 
FROM table 
GROUP BY EmpName 
+0

是的..它工作就像一個魅力..幸運的是我得到它的工作之前,我可以看到你的答案..但是,無論如何感謝..而這裏是我的版本的查詢..選擇最大( (客戶名稱),max(P.Client),max(P.BillGrp),目標,計數(*)來自生產力P左連接目標T在P.Client = T.Client 其中P.Client = T.Client和P .BillGrp = T.BillGrp組由P.EmpName,T.Target ..我已經映射了來自不同文件的目標.. –

+1

錯誤對不起,請參閱下面 –

+0

Used_By_Akready如果我不使用group在empname和其他字段..它拋出一個錯誤.. !!! –

1

您聲明這是工作查詢,但是您是否看到where子句存在任何問題?您冗餘地重複一個連接謂詞,而第二個謂詞也可以被視爲連接的一部分。

如果在group by子句中包含EmpName,請求MAX(EmpName)的要點是什麼?

SELECT 
     MAX(EmpName) 
     , MAX(P.Client) 
     , MAX(P.BillGrp) 
     , Target 
     , COUNT(*) 
FROM Productivity P 
     LEFT JOIN Targets T ON P.Client = T.Client 
WHERE P.Client = T.Client 
AND P.BillGrp = T.BillGrp 
GROUP BY 
     P.EmpName 
     , T.Target 

非聚集select子句的列應的組中的由條款(和反之亦然)被列出,即:

SELECT 
     T.Target 
     , MAX(EmpName) 
     , MAX(P.Client) 
     , MAX(P.BillGrp) 
     , COUNT(*) 
FROM Productivity P 
     LEFT JOIN Targets T ON P.Client = T.Client 
          AND P.BillGrp = T.BillGrp 
GROUP BY 
     T.Target