繁体   English   中英

如何在 SQL 连接中应用最大 function

[英]How to apply max function in a SQL join

我是 SQL 查询的新手,有人能帮我解决这个问题吗,我下面有两个表,需要连接这些表的位置,这样假设我在同一天同时拥有两个 Etype,则优先选择 Etype B 而不是 A,如果没有B则只取A

表格1

ID 地点
1个 美国
2个 英国

表2

地点 日期 E型
美国 2021-01-01 一种
美国 2021-01-01
英国 2021-02-03

预期结果如下:

ID 地点 日期 E型
1个 美国 2021-01-01
2个 英国 2021-02-03

您可以使用一个简单的聚合,假设您只有两种类型AB用于 Etype

SELECT t1.id, t2.location, t2.date, MAX(t2.Etype)
  FROM [table1] AS t1
  JOIN [table2] AS t2
    ON t2.location = t1.location
 GROUP BY t2.id, t2.location, t2.date

如果您需要消除联系,或者有两个以上的Etypes ,或者它们在现实生活中实际上不是按字母顺序排列的,或者您有其他您没有提到的列,您不能或不想聚合:

;WITH loc AS 
(
  SELECT location, date, Etype,
    rn = ROW_NUMBER() OVER (PARTITION BY location, date
         ORDER BY CASE Etype WHEN 'B' THEN 1
           WHEN 'A' THEN 2
           -- other conditions
           END)
  FROM dbo.table2
)
SELECT t1.Id, t1.location, loc.date, loc.Etype
FROM loc
INNER JOIN dbo.table1 AS t1
ON loc.location = t1.location
  AND loc.rn = 1;
SELECT T.ID,T.LOCATION,X.DATE,MAX(ETYPE)MAX_ETYPE
FROM TABLE_1 AS T
JOIN TABLE_2 AS X ON T.LOCATION=X.LOCATION
GROUP BY T.ID,T.LOCATION,X.DATE

你能试试上面的吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM