【发布时间】:2019-08-17 07:22:50
【问题描述】:
我有一个表格数据,比如
+--------------------------------------+--------------------------------------+-----------+--------+
| conversationid | participantid | mediatype | rownum |
+--------------------------------------+--------------------------------------+-----------+--------+
| 01fda91b-6001-4904-b0bc-8c61aec654b4 | 13f954cb-4acb-4ab9-89e7-c48ece23a043 | callback | 1 |
| 01fda91b-6001-4904-b0bc-8c61aec654b4 | 13f954cb-4acb-4ab9-89e7-c48ece23a043 | voice | 2 |
| 0519386a-2b8f-403c-b65b-fd8cc3c09a32 | b033fe2f-a58c-4973-8006-54561b5a5bf7 | voice | 1 |
| 085adea7-1deb-45d8-ae61-639255a689ce | 4151d364-5740-4dcf-b756-9772efaacb26 | voice | 1 |
| 0c50e9c5-cbe0-4da5-9a8c-976efea255b2 | 8f1ee999-8454-4db9-8c24-68e773350f39 | callback | 1 |
| 138da3c8-c118-4ddf-b294-57301261eb97 | cf2b643e-b07f-46c8-a52c-0cb5492e6485 | voice | 1 |
| 613c51c6-3c8b-4b53-91de-de3cc004fa92 | 54a84468-e452-4820-9c8a-89904ff97d8d | callback | 1 |
| 613c51c6-3c8b-4b53-91de-de3cc004fa92 | 54a84468-e452-4820-9c8a-89904ff97d8d | voice | 2 |
+--------------------------------------+--------------------------------------+-----------+--------+
我正在尝试根据特定列值(媒体类型)删除重复数据。
只有当对话ID和参与ID组合有两个值(语音,回调)时,我才需要排除带有meditype“语音”的行。
我试过代码
;with cte as(select conversationid,participantid ,
mediatype,row_number() over (partition by conversationid,participantid order by mediatype )
as rownum from #temp
)select * from cte where rownum=1
order by conversationid,participantid ,mediatype
但结果不是基于特定值,而是基于字母排除。我需要一个条件,当重复行的媒体类型为语音时,应排除该行。对于没有回调值的其他唯一行,应该返回mediatype voice。
【问题讨论】:
标签: sql sql-server