我用左联接将6列添加到主表中,但右表的主键列中有重复列,因为它的设计不正确。我无法解决这个问题,所以我必须与我的同事一起工作。我在MS Access中这样做,所以我不能访问像"按分区分组"这样的东西。
联接表:
KeyID | PA | QL |
---|---|---|
1111 | X | |
1111 | X |
我不确定我是否理解这个问题,但您可以应用聚合函数(如MAX(来消除null:
SELECT t1.KeyID, MAX(t2.PA) AS PA, MAX(t2.QL) AS QL
FROM t1
LEFT JOIN t2
ON t1.KeyID = t2.KeyID
GROUP BY t1.KeyID;
您可以使用两个子查询:
SELECT
KeyID,
(Select PA
From YourTable As T
Where T.KeyID = YourTable.KeyID And PA Is Not Null) AS PA,
(Select QL
From YourTable As T
Where T.KeyID = YourTable.KeyID And QL Is Not Null) AS QL
FROM
YourTable
GROUP BY
KeyID;
我的想法不是很可扩展,因为你必须为每个有这个问题的列创建一个新的查询,但下面是我的方法。
进行3次查询:
仅限- [Distinct KeyID]
- PA不为空的主表
- 主表WHERE QL不为NULL
现在是第四个查询,
SELECT query1.KeyID, query2.PA, query3.QL
FROM query1
LEFT OUTER JOIN query2 ON query1.KeyID = query2.KeyID
LEFT OUTER JOIN query3 ON query1.KeyID = query3.KeyID