Sql with语句中三列中的两列不同
试图将我的查询添加到组中,但它不喜欢我的组,因此我必须想出其他方法。如何为每个唯一的Person\u iD和ah\u Person\u iD组合获取一行,与哪一行无关Sql with语句中三列中的两列不同,sql,plsql,Sql,Plsql,试图将我的查询添加到组中,但它不喜欢我的组,因此我必须想出其他方法。如何为每个唯一的Person\u iD和ah\u Person\u iD组合获取一行,与哪一行无关 WITH w_accnt AS (SELECT DISTINCT account.id AS id, account.group_code AS account_number, acco
WITH w_accnt AS
(SELECT DISTINCT account.id AS id,
account.group_code AS account_number,
account.attribute_1 AS group_number,
account.source_id AS ah_person_id,
weekly.person_id AS person_id
FROM MyAccountTable account
INNER JOIN MyWeeklyTable weekly
ON weekly.account_id = account.id
),
示例表
Person AH_PERSON ACCOUNT_num
A 1 22
B 2 23
B 2 24
C 3 25
C 4 26
我想要的是预期的结果
Person AH_PERSON ACCOUNT_num
A 1 22
B 2 23
C 3 25
C 4 26
感谢使用聚合:
SELECT MIN(a.id) AS id, MIN(a.group_code) AS account_number,
MIN(a.attribute_1) AS group_number,
a.source_id AS ah_person_id,
w.person_id AS person_id
FROM MyAccountTable account a JOIN
MyWeeklyTable w
ON w.account_id = a.id
GROUP BY a.source_id, w.person_id
或者窗口功能:
SELECT aw.*
FROM (SELECT a.id, a.group_code AS account_number, a.attribute_1 AS group_number,
a.source_id AS ah_person_id, w.person_id AS person_id,
ROW_NUMBER() OVER (PARTITION BY a.source_id, w.person_id ORDER BY a.id DESC) as seqnum
FROM MyAccountTable account a JOIN
MyWeeklyTable w
ON w.account_id = a.id
GROUP BY a.source_id
) aw
WHERE seqnum = 1;
这使您能够更好地控制返回的值,并确保它们都来自同一行