Y / Nフラグを作成したいと思います。ここで、Yは、特定の行のすべての列のすべての有効な値が等しいことを示し、それ以外の場合はNを示します。null、ブランク、またはすべてゼロを含む列を考慮から除外する必要があります。仮定する:
CREATE TABLE z_test
(ID INT NOT NULL,
D1 VARCHAR(8)NULL,
D2 VARCHAR(8)NULL,
D3 VARCHAR(8)NULL,
D4 VARCHAR(8)NULL,
DFLAG CHAR(1)NULL)
INSERT INTO z_test VALUES (1,NULL,' ','000000','00000000',NULL)
INSERT INTO z_test VALUES (1,'20120101','0000','20120101','00000000',NULL)
INSERT INTO z_test VALUES (2,'20100101','20100101','20100101','20100101',NULL)
INSERT INTO z_test VALUES (2,'00000000','20090101','0','20090101',NULL)
INSERT INTO z_test VALUES (3,'00000000','20090101',NULL,'20120101',NULL)
INSERT INTO z_test VALUES (3,'20100101',' ',NULL,'20100101',NULL)
必要な出力(D1からD4を除くが、ドロップしたくない)は次のとおりです。
ID DFLAG
---------------
1 N
1 Y
2 Y
2 Y
3 N
3 Y
このクエリはあまり頻繁に実行されないため、速度は問題ではありませんが、大きなテーブル上にあります。
どんなポインタや提案も大歓迎です!!