0

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値を取得するために何をする必要があるか教えてもらえますか?

4

2 に答える 2

0

正確なスキーマによって異なりますが、uvw_EarnerInfoに重複なしでPin、Ref、およびRecがリストされていると仮定して、クエリの最後に(personOccupationの後に)次のような列を追加してみてください。

feeBudRecSum = (Select SUM(FeeBudRec) From uvw_EarnerInfo x 
            where x.feePin = uvw_EarnerInfo.feePin
            Group By x.FeePin)

レポートではこれらの値を合計しないことに注意してください。この列には、探している合計が含まれている必要があります。

于 2012-07-19T19:21:48.713 に答える
-1

Report Builder の鍵は、オフセットからクエリを正しく取得し、ウィザードでレポートを構成できるようにすることです。レポートを手動で構成するという大変な作業がすべてなくなります。しばらく Report Builder を使用していませんが、クエリのグラフィカル表現を表示するレポートのクエリ ビルダーでは、列をクエリ セット内外にドラッグ アンド ドロップできるはずです。列を上にドラッグしてボックスの外に出す (列を表示する) と、この列でレポートが壊れる可能性があります。この方法で再構築する場合は、おそらくレポート ジェネレーターを再度実行して、レポートを再生成し、再構築する必要があります。構造に満足したら、集計列の追加を開始できます。

于 2012-07-19T13:52:47.233 に答える