我正在使用SSRS 2008r2。我需要添加一個列的總數百分比似乎很直接,但我一直在努力與此一個星期,並閱讀了無數帖子百分比問題,並沒有發現任何工作。計算總數(每行)給出的百分比#Error
基本上我的查詢是哪種方法可以做到這一點 - 在報表正文或SQL代碼中?然後任何人都可以幫助如何讓這些工作。
我迄今所做的:
在SSRS我添加了一個表達式到最終列由共行的值來劃分的每個類型的記錄數:!=字段WebCommsPrefContact 。 Value/ReportItems!WebCommsPrefContact1 我在「文本框屬性」中將表達單元格格式化爲百分比格式。但結果顯示一個錯誤。我已經閱讀了很多關於此的帖子,但他們似乎都指的是除以零,但總行不會包含零。
我當時想,也許我需要添加的比例爲一列到我的SQL代碼: 原始代碼:
SELECT DISTINCT cp.tsg_communicationpreferencetypeidname AS WebCommsPrefType, con.tsg_contactuid AS WebCommsPrefContact
FROM Filteredccx_communicationpreference AS cp INNER JOIN
FilteredContact AS con ON cp.ccx_contact = con.contactid INNER JOIN
FilteredAccount AS comp ON con.accountid = comp.accountid
WHERE (cp.ccx_informationsource = 803080004) AND (con.statecode = 0) AND (cp.createdon BETWEEN '2016/11/25' AND '2017/10/13') AND (NOT EXISTS
(SELECT tsg_companyuid
FROM FilteredAccount
WHERE (comp.tsg_companyuid IN ('COMP00153968', 'COMP00091748', 'COMP00177586', 'COMP00231427', 'COMP00077428', 'COMP00077490', 'COMP00255796')))) AND
(cp.tsg_communicationpreferencecategoryidname LIKE 'Category 4%') AND (cp.ccx_status = 803080000)
ORDER BY WebCommsPrefType
我試圖通過添加新的子查詢到添加一個新列選擇行但導致全零:(在這個提取中,我仍然試圖獲得總行數,所以還沒有添加到分部來獲得百分比結果) - 語法顯然不正確
SELECT DISTINCT cp.tsg_communicationpreferencetypeidname AS WebCommsPrefType, con.tsg_contactuid AS WebCommsPrefContact,
count(select Filteredccx_communicationpreference.tsg_communicationpreferencetypeidname AS WebCommsPrefType, FilteredContact.tsg_contactuid AS WebCommsPrefContact
FROM Filteredccx_communicationpreference INNER JOIN
FilteredContact ON Filteredccx_communicationpreference.ccx_contact = FilteredContact.contactid INNER JOIN
FilteredAccount ON FilteredContact.accountid = FilteredAccount.accountid
WHERE ( Filteredccx_communicationpreference.ccx_informationsource = 803080004) AND (FilteredContact.statecode = 0) AND (Filteredccx_communicationpreference.createdon BETWEEN '2016/11/25' AND '2017/10/13') AND (NOT EXISTS
(SELECT tsg_companyuid
FROM FilteredAccount
WHERE (FilteredAccount.tsg_companyuid IN ('COMP00153968', 'COMP00091748', 'COMP00177586', 'COMP00231427', 'COMP00077428', 'COMP00077490', 'COMP00255796')))) AND
( Filteredccx_communicationpreference.tsg_communicationpreferencecategoryidname LIKE 'Category 4%') AND (Filteredccx_communicationpreference.ccx_status = 803080000)) as RecordCount
From
Filteredccx_communicationpreference AS cp INNER JOIN
FilteredContact AS con ON cp.ccx_contact = con.contactid INNER JOIN
FilteredAccount AS comp ON con.accountid = comp.accountid
WHERE (cp.ccx_informationsource = 803080004) AND (con.statecode = 0) AND (cp.createdon BETWEEN '2016/11/25' AND '2017/10/13') AND (NOT EXISTS
(SELECT tsg_companyuid
FROM FilteredAccount
WHERE (comp.tsg_companyuid IN ('COMP00153968', 'COMP00091748', 'COMP00177586', 'COMP00231427', 'COMP00077428', 'COMP00077490', 'COMP00255796')))) AND
(cp.tsg_communicationpreferencecategoryidname LIKE 'Category 4%') AND (cp.ccx_status = 803080000)
然後我想,也許我需要添加一個內部聯接到一個表,導致總行數。
SELECT DISTINCT cp.tsg_communicationpreferencetypeidname AS WebCommsPrefType, count(con.tsg_contactuid) AS WebCommsPrefContact, count(con.tsg_contactuid)/count(X.PContact) as percentage
FROM Filteredccx_communicationpreference AS cp INNER JOIN
FilteredContact AS con ON cp.ccx_contact = con.contactid INNER JOIN
FilteredAccount AS comp ON con.accountid = comp.accountid Inner join
(select Distinct Filteredccx_communicationpreference.tsg_communicationpreferencetypeidname AS WebCommsPrefType, FilteredContact.tsg_contactuid as PContact
FROM Filteredccx_communicationpreference INNER JOIN
FilteredContact ON Filteredccx_communicationpreference.ccx_contact = FilteredContact .contactid INNER JOIN
FilteredAccount ON FilteredContact.accountid = FilteredAccount.accountid
WHERE (Filteredccx_communicationpreference.ccx_informationsource = 803080004) AND (FilteredContact.statecode = 0) AND (Filteredccx_communicationpreference.createdon BETWEEN '2016/11/25' AND '2017/10/16') AND (NOT EXISTS
(SELECT tsg_companyuid
FROM FilteredAccount
WHERE (FilteredAccount.tsg_companyuid IN ('COMP00153968', 'COMP00091748', 'COMP00177586', 'COMP00231427', 'COMP00077428', 'COMP00077490', 'COMP00255796')))) AND
(Filteredccx_communicationpreference.tsg_communicationpreferencecategoryidname LIKE 'Category 4%') AND (Filteredccx_communicationpreference.ccx_status = 803080000)) as X ON cp.ccx_contact=X.PContact
WHERE (cp.ccx_informationsource = 803080004) AND (con.statecode = 0) AND (cp.createdon BETWEEN '2016/11/25' AND '2017/10/16') AND (NOT EXISTS
(SELECT tsg_companyuid
FROM FilteredAccount
WHERE (comp.tsg_companyuid IN ('COMP00153968', 'COMP00091748', 'COMP00177586', 'COMP00231427', 'COMP00077428', 'COMP00077490', 'COMP00255796')))) AND
(cp.tsg_communicationpreferencecategoryidname LIKE 'Category 4%') AND (cp.ccx_status = 803080000)
Group By cp.tsg_communicationpreferencetypeidname
ORDER BY WebCommsPrefType
但是,這隻會返回沒有結果的標題。我認爲這可能是主表與子查詢表之間的鏈接,但我很努力地看到如何使計數與外部查詢完全相同,而不需要具有完全相同的代碼,因爲每個聯繫人都可以有多個類型。