-1
我需要爲報表創建查詢並捕獲填充了多少百分比的數據並將其顯示爲計算列。SQL Server 2012 - 創建顯示查詢百分比的計算列
到目前爲止,我還用寫了一個查詢連接來獲得我所需要的數據:
查詢:
SELECT
SU.ID,
MAX(SU.[GenderID]),
MAX(SU.[TelephoneNumber]),
MAX(SU.[MobileNumber]),
MAX(SU.[AddressID]),
MAX(SU.[WebSite]),
MAX(SU.[Narrative]),
MAX(SU.[IndividualTitleID]),
MAX(SU.[DateOfBirth]),
MAX(SUED.SystemUserID) AS [SUEDID],
MAX(SUE.ID) AS [SUEID],
MAX(SUQ.ID) AS [SUQID],
MAX(SUPB.ID) AS [SUPB],
MAX(SUPQ.ID) AS [SUPQID],
MAX(SUPI1.ID) AS [Skill],
MAX(SUPI2.ID) AS [Achievement],
MAX(SUPI3.ID) AS [Interest]
FROM
[Employed].[SystemUser] SU
LEFT OUTER JOIN
[Profile].[SystemUserEducation] SUED ON SU.ID = SUED.SystemUserID
LEFT OUTER JOIN
[Profile].[SystemUserQualification] SUQ ON SUED.ID = SUQ.SystemUserEducationID
LEFT OUTER JOIN
[Profile].[SystemUserEmployment] SUE ON SU.ID = SUE.SystemUserID
LEFT OUTER JOIN
[Profile].[SystemUserProfessionalBody] SUPB ON SU.ID = SUPB.SystemUserID
LEFT OUTER JOIN
[Profile].[SystemUserProfessionalQualification] SUPQ ON SU.ID = SUPQ.SystemUserID
LEFT OUTER JOIN
[Profile].[SystemUserProfileItem] SUPI1 ON SU.ID = SUPI1.SystemUserID AND SUPI1.SystemUserProfileItemTypeID = 1 -- Skills
LEFT OUTER JOIN
[Profile].[SystemUserProfileItem] SUPI2 ON SU.ID = SUPI2.SystemUserID AND SUPI2.SystemUserProfileItemTypeID = 2 -- Achievement
LEFT OUTER JOIN
[Profile].[SystemUserProfileItem] SUPI3 ON SU.ID = SUPI3.SystemUserID AND SUPI3.SystemUserProfileItemTypeID = 3 -- Interest
WHERE
SU.ID = 4604
GROUP BY
SU.ID
計算
有16列在上面的查詢,我需要檢查每列是否有數據,如果有數據,則分配一個1或者如果它爲空則分配一個0.
一旦我得到了有數據的列的總和,然後我想執行這樣的計算 - * 100 *完成的列/總列數*然後,我想要顯示它作爲該查詢的列。
基本上這個數據將被用在報告中。
我如何能做到這一點的SQL將是巨大的任何意見,感謝
如果您第一次檢查時 - su.id IS NOT NULL,則1,你可以使用'CASE'-例如'CASE ELSE 0 END AS su_id_bool' - 至於你的計算,你是問如何計算或者你已經知道了? – doublesidedstickytape
其中rdbms? Oracle,MySQL? SQL服務器,如果是這樣的版本2012+?同時鼓勵您根據這些數據輸入一些樣本數據和所需結果,以幫助人們將解決方案形象化。請包含爲DML語句。 http://meta.stackoverflow.com/questions/271055/tips-for-asking-a-good-structured-query-language-sql-question/271056 – Matt
doublesidedstickytape - 謝謝我不知道我會怎麼做計算 – HitTheSky