2016-09-15 25 views
0

我的任務是根據員工本年度的福利保障範圍制定報名表格。完整報告的每個頁面將顯示每個員工的信息,其頂部顯示典型信息,然後顯示所有可用福利類型的列表,旁邊有一列顯示可能的美元數字,表明該員工目前正在爲該類型的覆蓋範圍。如果此欄位爲空白,則該員工沒有該覆蓋範圍。SSRS表格/報告和外部加入結果

這是形式的樣子: enter image description here

我已經寫了採用左外連接返回,每福利性質的一排從主利益表用那些行包括員工查詢信息和單身員工的支付金額。當我修改查詢以檢索多個員工的結果時,結果集僅包含額外員工正在付款的額外行。我的想法是,我需要制定我的數據集,以便總行數=員工人數*福利數量。也許我會以錯誤的方式去解決這個問題。

高低搜索,但感到需要接觸我從中學到很多東西的社區。是的,第一次潛伏者崗位。希望我的情況已被清楚而簡潔地描述。

編輯:這是SQL我得到的結果,我正在尋找1人。當我要求增加員工時,它只會返回他們支付的福利。福利表只有排隊才能獲得員工的收益。 pr_deduction_master表具有所有優點。不要問我關於代碼指定......似乎這個實現在某些方面做得很差。

select emp.a_name_last + ', ' + emp.a_name_first as 'Name', emp.a_employee_number, emp.e_ssn, emp.e_email, 
    emp.ed_p_address1, emp.ed_p_address_city, emp.ed_p_address_state, emp.ed_p_address_zip, 
    a.a_deduction_code, a.a_ded_desc_long, b.a_employee_number, b.dh_emp_amount 
from 
(select distinct a_deduction_code, a_ded_desc_long from pr_deduction_master where a_deduction_code in 
(2000,2005,2007,2008,2010,2015,2020,2025,2027,2030,2040,2045, 
2050,8055,8205,8210,8215,8220,8225,8230,8235,8240,8245,8250, 
8252,8253,8255,8260,8280,8290,8295,8300,8305,8310,8315,8316, 
8700,8701,8702,9100,9150,9151,9200)) a 
left outer join 
(select distinct a_employee_number, a_deduction_code, dh_emp_amount from pr_ded_history where a_employee_number in (603) and dh_pr_warr like '10816A') b 
on a.a_deduction_code = b.a_deduction_code 
left outer join 
(select a_employee_number, a_name_last, a_name_first, ed_p_address1, ed_p_address_city, ed_p_address_state, ed_p_address_zip, e_ssn, e_email 
from pr_employee_master) emp 
on b.a_employee_number = emp.a_employee_number 
order by a_ded_desc_long 

我希望這會讓任何人都放肆。新手試圖在這裏變得更好。我會研究這些建議。真的很感謝答覆。

編輯2:繼丹尼爾·E公司的建議,「把(員工)CROSS左加入到[EmployeeBenefits]表前申請[優點]」跨應用表明我有什麼需要像下面。

Employee Table and Benefits Table

當我試着使用第三表,扣除歷史表,其中扣除記錄了一個月的每個員工,我得到意想不到的結果,加入的變化。我打算加入第三個表格,並在員工沒有這種類型的福利扣除的情況下顯示NULL,然後在上一期間支付的福利金額爲美元。

+0

發佈你的SQL,以便我們知道你的表結構是什麼以及你在做什麼? – ajeh

+0

「總行數=僱員人數*福利數量」。你爲什麼要離開外部連接?這可能是你的問題。一個左連接應該給你你需要的,你應該只需要一個連接。員工離開加入福利。一個左外連接表明你正在消除那些不會讓你更接近你的陳述的行。 ...但是。發佈一些示例數據,如果您需要幫助,請發佈您的表格結構。 – xenapan

+0

某些模式信息可能會有幫助。你的源表是什麼樣的。一些樣本數據也會很好。福利表對於員工支付的每筆福利或者$ 0s是否有一排? – SMM

回答

1

爲了完成我試圖實現的目標,我選擇了接近Daniel E.所說的東西。

取(員工)CROSS左加入到 表[EmployeeBenefits]前申請[優點] - 丹尼爾E.

不同的是,我utitilized CROSS JOIN。當我離開加入[EmployeeBenefits]表時,我仍然有困難,因爲我試圖對該表應用一個過濾器,這反過來使它成爲一個INNER JOIN。這反過來又通過用過濾器嵌套對該表的查詢來解決。

再次感謝大家的意見和幫助!