2017-03-01 58 views
-1

我已經使用了多年的stackoverflow,通常我已經能夠通過搜索找到我需要的東西,但是我很抱歉,我找不到像這樣的例子。我對這個東西非常陌生,但是很喜歡在工作中協助各種項目。訪問SQL - 我需要一個查詢來根據幾個條件計算字段

我在保險索賠行業工作,我們有保險索賠作爲電子文件。主管對這些文件進行審查,簡單地稱爲文件審查。我有一個Access數據庫,我用它來跟蹤工作中的所有文件評論。

有時候,作爲索賠主管,我們正在對我們的OWN員工進行文件審查,這意味着員工向我報告。其他時間,我正在對一位向不同主管報告的員工進行文件審查。

我的主人表看起來像這樣(有很多其他的列),每個記錄表示文件回顧:

ClaimNumber | Supervisor | Reviewer 
----------- | -----------| ------------ 
1---------- | ---Bob-----| Bob 
2---------- | ---Bob-----| Amy 
3---------- | ---John----| Amy 
4---------- | ---John----| Dean 
5---------- | ---John----| John 
6---------- | ---Dean----| Dean 
7---------- | ---Dean----| Dean 
8---------- | ---Dean----| Bob 
9---------- | ---Kyle----| Bob 
10--------- | ---Bob-----| Shawn 

取決於是否聯接上使用,請注意,有時未列出的主管名字在審閱者專欄中一次。同樣,有時評審員姓名並未在監督員列中單獨列出。

所以,我需要返回

Reviewer ------ TotalReviews ---- Self_Reviews ---- Cross_Reviews 

審閱者都是獨特的評審

TotalReviews是該審閱的名字多少次檢查者列中列出的計數的單個查詢

自我評價是評價者名稱在評論者欄中列出的次數,其名稱等於該特定記錄的主管名稱

交叉審查是多少倍,評論者的名稱在檢查者列中列出的計數,他們的名字不等於管理者名特定記錄

Bob有3條,共計1個自我,2跨

艾米有2人評價總評分,0自我,2跨

院長有3條,共計2自我,1跨

John有1條,1個自我,0跨

肖恩有1條評論,0個自我點,1個交叉點

我知道這對我來說似乎很複雜,但我希望有人可以協助讓它更容易。我只是使用Access,所以任何oracle或其他SQL語法可能無法正常工作。

回答

0

你可以在這裏使用一個簡單的技巧:總結指標功能。

自我評論的指標函數爲Switch(Supervisor = Reviewer,1,True,0)

這導致下面的查詢:

SELECT 
    T.Reviewer, 
    COUNT(*) AS TotalReviews, 
    SUM(Switch(T.Supervisor = T.Reviewer,1,True,0)) AS Self_Reviews, 
    SUM(Switch(T.Supervisor <> T.Reviewer,1,True,0)) AS Cross_Reviews 
FROM TableName T 
GROUP BY T.Reviewer 

在其他環境中,比訪問時,指示燈功能通常是fllowing:

CASE WHEN Supervisor = Reviewer THEN 1 ELSE 0 END 
+0

M.Doerner ......非常感謝!我收到語法錯誤,缺少操作符!? –

+0

@TrialRun對不起,我忘了關閉SUM的圓括號。編輯它。 –

+0

哇,完美的人!我真誠地感謝您的幫助和解決方案,比我嘗試的其他一些東西更容易!再次謝謝你,先生! –

相關問題