あなたは混乱の少しを持っているようですね。分散のルールが分かっている場合は、更新する自動スクリプトを作成できます。しかし、それはかなり緩やかなように聞こえるので、フィールドの有効な値を決定し、そのテーブルを検証し、無効なデータを識別して分類することから始めたいと思うかもしれません。
最初のステップでは、有効な診断コードのリストを取得してテーブルに取得する必要があります。次のようなもの:
CREATE TABLE [dbo].[DiagnosticCodes](
[DiagnosticCode] [varchar](8) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[DiagnosticDescription] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_DiagnosticCodes] PRIMARY KEY CLUSTERED
(
[DiagnosticCode] ASC
)
)
次に、有効なコードのリストを取得し、このテーブルにインポートします。
テーブル内の無効なデータを検索する必要があります。これは、すべての無効なコードのテーブルを作成してもあなたが不正なコードからマッピングを移入しますNewCode
というフィールドが含まれ
CREATE TABLE [dbo].[DiagnosticCodesMapping](
[Diag] [varchar](8) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[NewCode] [varchar](8) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_DiagnosticCodesMapping] PRIMARY KEY CLUSTERED
(
[Diag] ASC
)
)
insert into [dbo].[DiagnosticCodesMapping]
Select distinct MyDataTable.Diag, null NewCode
from MyDataTable
left join DiagnosticCodes
on MyDataTable.Diag = DiagnosticCodes.DiagnosticCode
where DiagnosticCodes.DiagnosticCode is null
:このクエリのようなものは、あなたのデータベース内のすべての無効なコードを与えます新しい有効なコードうまくいけば、このリストは馬鹿馬鹿しくはないでしょう。次に、レビューのためにそれを他の人に渡し、NewCode
フィールドを有効なコードの1つとして入力します。あなたは、有効なコードを持っているすべてのフィールドを取得するために、更新を行うことができ、完全に満たされ、あなたのDiagnosticCodesMapping
テーブルを、持っていたら:このようにそれをやって
update MyDataTable
set Diag=NewCode
from MyDataTable
join DiagnosticCodesMapping
where MyDataTable.Diag = DiagnosticCodesMapping.Diag
あなたは今、すべてのデータエントリを検証し始めることができるという利点もあり将来このクリーンアップをやり直す必要はありません。 DiagnosticCode
テーブルの有効なコードのみをデータテーブルのDiag
フィールドに入力できるようにする制約を作成できます。インタフェースをチェックして、新しいルックアップテーブルも使用するようにしてください。スーパーユーザーに新しいコードを追加する必要がある場合は、DiagnosticCode
テーブルへのデータメンテナンスインターフェイスも作成する必要があります。
Licantropo .....あなたの方法は完全に機能しました。あなたのすべての専門家のためのもう1つの質問。ここで私を助けてくれた解決策を一つ修正する必要があります...すでに私に提供していることに加えて、diag変数が数字以外で始まる行を除外できるようにする必要があります。言い換えれば、最初の文字がアルファベットの文字であれば、それを私が戻すものに含めることは望ましくありません。すべてのあなたの助けを非常にありがとう! –