助けが必要な編集ルーチンがあります。10 未満の値を「編集済みの詳細」と呼ばれる単一の行に編集しました。ただし、編集された詳細列でもまだ 10 未満である場合があり、10 を超えるまで、編集に追加する次の最小数を取得する必要があります。次のステップは、私を悩ませているものです。リダクションの次の最小値を取得したら、これに寄与した行を削除する必要があります。問題は、この時点でデータ セットの自然キーを持っていないことです。
各サブセットでカーソルを使用することを考えていましたが、できればこれを避けたいです。
私は作業している2つのテーブルを持っています。
#WorkingTable ( DashboardYear varchar()
, Institutition varchar()
, StudentLevel varchar()
, Field varchar()
, FieldDescription varchar()
, CountOfStudents varchar()
)
#RedactedValues( DashboardYear Varchar()
, Institution Varchar()
, StudetnLevel Varchar()
, Field Varchar()
, FieldDescription Varchar()
, CountOfStudents Varchar()
)
Insert INTO #RedactedValues
SELECT DashboardYear
, Institution
, StudetnLevel
, Field
, FieldDescription
, CountOfStudents
From #WorkingTable
WHERE (CAST(CountOfStudents AS INT) < 10 and CAST(CountOfStudents AS INT) > 0)
and Field = 'XXXX'
-- Find Next Lowest Value for each group and add to redacted total
UPDATE #RedactedValues
SET CountOfStudents = CAST(r.CountOfStudents AS INT) + CAST(nextValue.nextValueToRedact AS INT)
FROM
(SELECT DashboardYear
, Institution
, StudentLevel
, MIN(CAST(CountOfStudents AS INT)) AS nextValueToRedact
FROM #WorkingTable t
WHERE CAST(t.CountOfStudents AS INT) > 0
and t.Field <> 'XXXX'
and t.fieldDescription not like '%unknown'
GROUP BY DashboardYear, Institution, StudentLevel
) nextValue
JOIN #RedactedValues r
on r.DashboardYear = nextValue.DashboardYear
and r.Institution = nextValue.Institution
and r.StudentLevel = nextValue.StudentLevel
上記は、データの各グループの次に小さい整数値を見つけるのに最適で、それを detailsRedacted 行に正しく追加します。しかし、最小値だった行に戻って0に設定する方法がわかりません。
レピュテーションの制限により、まだ画像を追加できません...そのため、データがどのように見えるかを示すことはできません. また、機密性が高いため、データをどこにも投稿できません。
上記のデータ セットを見ると、詳細編集列は 5 しかありません。この 13 のグループ内の値を取得し、それを詳細編集列に追加できます。しかし、DashboardYear、Institution、および StudentLevel しかキーとして持っていないため、リダクションに寄与した単一の行を定義するために必要な Field に到達できません。
update countofstudent = 0 select min(countofStudents) group by 句を実行して完了したかっただけですが、これではうまくいきません。
まだ見たことのない忍者のトリックがあることを願っています。申し訳ありませんが、コードを投稿していませんが、役立つかどうかはわかりません..