SERIAL_NUMBER | BIP_WIDE_AREA_PORT | IP_FAST_REROUTE | GWIP_MULTICAST
_____________________________________________________________________
N7608760 YES NO NO
N7608760 NO YES NO
上面的表片段有四列serial_number、BIP_WIDE_AREA_PORT、IP_FAST_REROUTE、GWIP_MULTICAST
因此,我有一个序列号列表,并展示我创建的标志的相关产品,即 BIP_WIDE_AREA_PORT、IP_FAST_REROUTE 等。我想在一条记录中展示所有产品信息。例如,在这里:对于 service_number = N2039163R - 我希望一行显示所有标志的信息,而不是像这样的两个/更多记录:
SERIAL_NUMBER | BIP_WIDE_AREA_PORT | IP_FAST_REROUTE | GWIP_MULTICAST
_____________________________________________________________________
N7608760 YES YES NO
谁能建议如何实现这一目标?我对PIVOT功能不是很熟悉,我尝试过但它不起作用。
我正在尽可能简单地编写我的案例陈述:
CASE
WHEN P1.name LIKE '%BIP WIDE AREA PORT%' THEN 'Yes'
ELSE 'No'
END AS BIP_WIDE_AREA_PORT,
CASE
WHEN P1.name LIKE 'NEXTG BACKUP' THEN 'Yes'
ELSE 'No'
END AS NEXTG_BACKUP
最佳答案
您可以使用GROUP BY
和MAX()
来做到这一点:
因为“Y”>“N”,与NO
相比,YES
将是最大值。
SELECT SERIAL_NUMBER, MAX(BIP_WIDE_AREA_PORT) AS BIP_WIDE_AREA_PORT,
MAX(IP_FAST_REROUTE) AS IP_FAST_REROUTE,
MAX(GWIP_MULTICAST) AS GWIP_MULTICAST
FROM mytable
GROUP BY SERIAL_NUMBER;
关于sql - 拥有带有标志值的唯一记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77561929/