Report Builder 3 を使用してレポートを作成していますが、一意の値を取得するための SQL クエリに関するヘルプが必要です。
次のサンプル データを使用します。
各feeRefに対して返されるfeeBudRecの単一の値を取得できる必要があります。各feeBudRecの値は、個々のfeeRefごとに常に同じです(たとえば、feeRef LR01のすべてのデータ行のfeeBudRecは1177になります)。
各feeRefに対して単一のfeeBudRec値を取得する必要がある理由は、feePin内の各feeRefのfeeBudRec値を合計できる必要があるためです(たとえば、feePin LEEの場合、LR01とPS01のfeeBudRec値を合計する必要があります。合計 3134 を取得するには 1177 + 1957 にする必要がありますが、feeBudRec に一意の値がない場合は、各行の値が追加され、8 つの LEE 行の合計が 11756 になります)。
私の SQL クエリの作成経験は非常に限られていますが、インターネットを検索したところ、feRef ごとに 1 つの一意の feBudRec 数値を取得するために、SQL クエリにサブクエリを追加する必要があるようです。各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値を取得するために何をする必要があるか教えてもらえますか?