我有这个查询:

select distinct RL.LINK_ID as LINK_ID, RLG.[ZLEVEL]
from RDF_LINK as RL, RDF_LINK_GEOMETRY as RLG
where (RL.BRIDGE = 'Y' OR RL.TUNNEL = 'Y') AND RL.LINK_ID = RLG.[LINK_ID]


这让我这个输出:

RecNo LINK_ID ZLEVEL
1 26018528 0
2 53678211 1
3 53678211 0
4 53681432 1
5 53681432 0
6 53682353 0
7 53682353 1
8 53683791 1
9 53683791 0
10 53691049 1
11 53691049 0


现在,如果有两个(我的ZLevel为1),我想要一个LINK_ID

同样,我尝试了GROUP BYHaving with CASE statement,但无法获得所需的输出。

最佳答案

分组后,如果您想过滤掉某些组,将使用HAVING。

但是,您实际上想为每个LINK_ID创建一个组,并为每个组获取最大的ZLEVEL值:

SELECT RL.Link_ID,
       max(RLG.ZLevel)
FROM RDF_Link AS RL
JOIN RDF_Link_Geometry AS RLG USING (Link_ID)
WHERE RL.Bridge = 'Y'
   OR RL.Tunnel = 'Y'
GROUP BY RL.Link_ID

关于sql - HAVING子句中的CASE语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25132739/

10-10 00:31