拥有带有标志值的唯一记录

问题描述 投票:0回答:1
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
sql sql-server pivot
1个回答
0
投票

您可以使用

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
© www.soinside.com 2019 - 2024. All rights reserved.