誰かがこの表を正規化し、ベストプラクティスを実行する前に、私はこれをSQL Server 2008 R2の古い表であることを認めます私はそれを変えることについて何もすることはできません。この表には、次の列があります。同じ行の異なる列の重複する値を見つける
"PreparedBy", "PrelimApprovalBy", "Approval1Signer", "Approval2Signer"
これらのフィールドはすべてユーザー名またはNULLか ''のいずれかです。上記の2つ以上のフィールドに同じユーザー名が表示される行をすべて取得したいとします。 2つのフィールドがNULLの場合、ではなくと一致し、両方が ''の場合はではないと一致します。したがって、NULLと ''の両方は、何も意味しないので、除外する必要があります。
ここで私はSO FARと考えるものだが、それを好きないです:
私は線に沿って何かをすることによってWHERE句(NULLをチェックし、「」)ですべての順列をチェックすることを考えています
WHERE PreparedBy = PrelimApprovalBy OR PreparedBy = Approval1Signer OR ...
これを行うにはより良い方法があるはずです。
これは素晴らしいです!できます!前にこの構文を見たことがない... FROM(VALUES ... AS X(n))。私は今日何か新しいことを学んだ! – Denis
新しい構文を助けてくれることをうれしく思います。工具ベルトの多くの工具は傷つけられません。また、このソリューションでは多くの列を簡単に処理できますが、他の方法ではサイズや複雑さが急速に爆発的に増加します。 – GilM
+1はきれいに見えます。これは任意のSQLサーバーで動作しますか? –