我正在使用Report Builder 3編寫報表,並且我需要一些幫助以獲取唯一值。SQL - 如何在查詢中插入子查詢以檢索唯一值
使用下面的示例數據:
我需要能夠得到一個單值feeBudRec返回每個feeRef。每個feeBudRec的值對於每個單獨的feeRef總是相同的(例如,對於每個數據行的費用,參考LR01將具有1177的feeBudRec)。
爲什麼我需要爲每個feeB獲得一個單一的feeBudRec值參考是我需要能夠爲feeBin中的每個feeRef獲得feeBudRec值(例如,對於feePinLEE,我需要總計feeBudRec值爲LR01和PS01應該是1177 + 1957才能得到總計3134;但是如果我沒有feeBudRec的唯一值,它會爲每一行添加值,這將爲總共11756個8 LEE行)。
我的編寫SQL查詢的經驗非常有限,但是從搜索互聯網看起來,我需要在我的SQL查詢中放入一個子查詢,以便爲每個feeRef獲取一個唯一的feeBudRec數字,並且每個feeRef獲得最低feeBudRec值的子查詢應該適用於我。
基於我發現的例子,我覺得有以下子查詢應該工作:
SELECT a.feeRef, a.feeBudRec
FROM (
SELECT uvw_EarnerInfo.feeRef, Min(uvw_EarnerInfo.feeBudRec) as AvailableTime
FROM uvw_EarnerInfo
GROUP BY
uvw_EarnerInfo.feeRef
) as x INNER JOIN uvw_EarnerInfo as a ON a.feeRef = x.feeRef AND a.feeBudRec = x.AvailableTime;
的問題是,我不知道如何將子查詢到我使用產生查詢報告(如下):
SELECT
uvw_EarnerInfo.feeRef
,uvw_EarnerInfo.PersonName
,uvw_EarnerInfo.PersonSurname
,uvw_EarnerInfo.feePin
,uvw_RB_TimeLedger.TimeDate
,uvw_RB_TimeLedger.matRef
,uvw_RB_TimeLedger.TimeTypeCode
,uvw_RB_TimeLedger.TimeCharge
,uvw_RB_TimeLedger.TimeElapsed
,uvw_WoffTimeByTime.WoffMins
,uvw_WoffTimeByTime.WoffCharge
,uvw_EarnerInfo.feeBudRec
,uvw_EarnerInfo.personOccupation
FROM
uvw_RB_TimeLedger
LEFT OUTER JOIN uvw_WoffTimeByTime
ON uvw_RB_TimeLedger.TimeId = uvw_WoffTimeByTime.TimeId
RIGHT OUTER JOIN uvw_EarnerInfo
ON uvw_EarnerInfo.feeRef = uvw_RB_TimeLedger.feeRef
WHERE
uvw_RB_TimeLedger.TimeDate >= @TimeDate
AND uvw_RB_TimeLedger.TimeDate <= @TimeDate2
如果子查詢會得到正確的結果,任何人都可以請幫我將它插入我的報表查詢。否則,任何人都可以讓我知道我需要做什麼才能爲每個feeRef獲得唯一的feeBudRec值?
感謝您的回覆。我應該提到我之前已經使用了Report Builder,但是我之前從來沒有必要爲此報告提供像這樣的獨特值。不幸的是,這不是正確格式化報告的問題。如果我在中斷的左側(即作爲一個組,而不是報告的詳細信息)放置feeBudRec列,並嘗試將feeBin的feeBudRec的值相加,我會得到相同的錯誤結果(將費用總和加起來如果feeBudRec字段是細節的一部分,則與我一樣,每個feeRef的每行數據的值)。 – tefkae 2012-07-19 15:51:02