this articleに続いて、私は部分的にmySQLテーブルを転置することができました。いくつかのデータを挿入し、その後、GROUP_CONCATを使用したPIVOTの問題
CREATE TABLE `test`.`treat` (
`patient` INT NOT NULL ,
`pathology` VARCHAR(15) NOT NULL ,
`present` VARCHAR(15) NOT NULL
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_unicode_ci;
:これはテーブルです
INSERT INTO `test`.`treat` (`patient`, `pathology`, `present`)
VALUES ('1', 'myeloid', 'yes'), ('2', 'lymphoid', 'yes'), ('2', 'myeloid', 'no'), ('3', 'myeloid', 'no'), ('4', 'lymphoid', 'yes');
を、今私はpatients
がlymphoid
またはmyeloid
病理の影響を受けているものを取得する必要があります:私は取得
患者がこれら病変の1つに罹患したことを示すこのような表、または利用可能な情報がない場合NULL
:
patient myeloid lymphoid
1 yes NULL
2 no yes
3 no NULL
4 NULL yes
これらのデータは定期的なテストに対応しています。簡略化のためにtest
パラメータを省略しました(test INT NOT NULL
)。しかし、問題は、同じ患者に対して2つのデータがある場合です。たとえば、のはtest
キーと患者2のための新しいテストを追加してみましょう(以前のすべてのtest
の値が1をテストするために相当):
INSERT INTO `test`.`treat` (`patient`, `pathology`, `present`, `test`)
VALUES ('2', 'myeloid', 'yes', '2');
我々は、クエリを実行すると、我々は、この表を得る:
patient myeloid lymphoid
1 yes NULL
2 no,yes yes
3 no NULL
4 NULL yes
を患者番号2は、myeloid
行を持ちます。この行は、* GROUP_CONCAT *によって生成され、2つのカンマ区切り値があります。
patient myeloid lymphoid
1 yes NULL
2 no yes
2 yes NULL
3 no NULL
4 NULL yes
テスト番号を考慮するにはどうすればよいですか?