我有这个查询:
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 BY
和Having 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/