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' 那么 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