考虑下表,
CREATE TABLE temp (
[TabName] VARCHAR(255),
[PersonID] VARCHAR(255),
[FirstName] VARCHAR(255),
[Gender] VARCHAR(255),
[BenefitType] VARCHAR(255),
[HealthStatus] VARCHAR(255));
INSERT INTO temp VALUES
('TAB1', 'C103','John', 'M', 'Benefit Type 1', NULL),
('TAB2', 'C103','John', 'M', NULL, 'Healthy'),
('TAB3', 'C103', 'John', 'M', NULL, 'Healthy'),
('TAB1', 'C104', 'Mary', 'M', 'Benefit Type 2', NULL),
('TAB2', 'C104', 'Mary', 'M', NULL, 'Sick'),
('TAB3', 'C104', 'Mary', 'M', NULL, NULL)
TabName PersonID FirstName BenefitType HealthStatus
TAB1 C103 John Benefit Type 1 NULL
TAB2 C103 John NULL Healthy
TAB3 C103 John NULL Healthy
TAB1 C104 Mary Benefit Type 2 NULL
TAB2 C104 Mary NULL Sick
TAB3 C104 Mary NULL NULL
我想将跨 TabName 的信息合并到一个新表中,以便新表包含每个 PersonID 的所有唯一信息。
例如,根据上表,我想找到新的表
PersonID FirstName BenefitType HealthStatus
C103 John Benefit Type 1 Healthy
C104 Mary Benefit Type 2 Sick
我不太确定从哪里开始解决这个问题。
您能否在列
BenefitType
中为同一个人提供多个唯一信息?如果否(只有一个唯一值/状态),您可以使用
MAX
,否则(您可以有更多唯一值) - 您必须提供更多信息,一种如何检索所需值的算法。
同样,对于列
HealthStatus
。输出:
dbfiddle在这里