簡體   English   中英

Ms-access查詢以合並行

[英]Ms-access query to merge rows

我想要一個查詢在大表中合並滿足以下條件的兩行中的每一行:

  1. SurnameNameFatherName Surname是重復的
  2. 12含有“---”的行中的一個和34含有“---”在另一行

示例數據:

Surname  Name   FatherName  Phone  Mobile   1     2     3     4
Smith    Alex   Nick        12345  00000   xxx   zzz   ---   ---
Smith    Alex   Nick        12345  00000   ---   ---   vvv   aaa
Jone     Mary   John        22222  11111   sss   eee   ---   ---
Pan      Peter  Peter       33333  22222   ttt   uuu   ---   ---
Bob      Nick   Nick        44444  77777   ---   ---   ppp   qqq
Mary     Maria  John        99999  00000   jjj   kkk   ---   ---
Mary     Maria  John        99999  00000   ---   ---   iii   ---

預期產量:

Surname  Name   FatherName  Phone  Mobile   1     2     3     4
Smith    Alex   Nick        12345  00000   xxx   zzz   vvv   aaa
Jone     Mary   John        22222  11111   sss   eee   ---   ---
Pan      Peter  Peter       33333  22222   ttt   uuu   ---   ---
Bob      Nick   Nick        44444  77777   ---   ---   ppp   qqq
Mary     Maria  John        99999  00000   jjj   kkk   iii   ---

試試這個簡單的查詢:

Select
    Surname,  
    Name,
    FatherName,
    Phone,
    Mobile,
    Max(T.[1]) As [1],
    Max(T.[2]) As [2],
    Max(T.[3]) As [3],
    Max(T.[4]) As [4]
From
    YourTable As T
Group By
    Surname,  
    Name,
    FatherName,
    Phone,
    Mobile

這適用於您的樣本數據。
首先使用自聯接,我獲取合並的行,然后使用UNION ALL獲取唯一的行:

SELECT t1.Surname, t1.Name, t1.FatherName, t1.Phone, t1.Mobile,
t1.[1], t1.[2], t2.[3], t2.[4]
FROM tablename t1 INNER JOIN tablename t2
ON t1.Surname = t2.Surname AND t1.Name = t2.Name AND t1.FatherName = t2.FatherName
AND (
  (t1.[1] <> '---' OR t1.[2] <> '---')
  AND 
  (t1.[3] = '---' AND t1.[4] = '---')
  AND 
  (t2.[3] <> '---' OR t2.[4] <> '---')
  AND
  (t2.[1] = '---' AND t2.[2] = '---')
)
UNION ALL
SELECT * FROM tablename AS t1
WHERE NOT EXISTS (
  SELECT 1 FROM tablename AS t2
  WHERE t1.Surname = t2.Surname AND t1.Name = t2.Name AND t1.FatherName = t2.FatherName AND t1.[1] <> t2.[1]
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM