【问题标题】:Remove duplicate records from table and return 3 columns从表中删除重复记录并返回 3 列
【发布时间】:2020-05-22 16:19:39
【问题描述】:

我遇到了问题,我想返回一个表格,每个票证 ID 有一行。

SQL 查询

SELECT
    tickets.tid,
    CASE WHEN ticketnotes.message 
            LIKE '%https://xxxx.zendesk.net/.../%' 
            THEN ticketnotes.message 
            ELSE '-' END as escalated,
    CASE WHEN ticketnotes.message 
            LIKE '%Ticket ID%Issue Summary%Suggested Solution%' 
            THEN ticketnotes.message 
            ELSE '-' END as message
FROM
    tickets
    INNER JOIN ticketnotes ON ticketnotes.ticketid = tickets.id
WHERE
    tickets.status = 'Closed' 
    AND tickets.did = 7
    AND DATE(tickets.date) BETWEEN DATE('2020-04-01') AND DATE('2020-04-30')

输出

目标是返回具有唯一工单 ID 的表,如果工单 ID 中有消息或升级消息,则在列中返回。如果没有,返回-。 如果票证 id 得到升级和消息,则正确的输出将在一行中,每列 3 列,如图所示。

【问题讨论】:

  • 你的预期输出是什么?
  • 我的票有 5 条还是 10 条消息?
  • @zouaoui-zandeh 一行,每张票都有票号/升级的消息/消息。如果通过链接或“问题摘要”进一步注明,请在工单 ID 的另一行中注明。
  • @GMB 如果有更多笔记,那么更多行。但应该不同

标签: php mysql sql mariadb


【解决方案1】:

试试这个:

SELECT
    distinct t1.tid,
    t2.message as "escalated",
    t3.message as "message"
FROM
    tickets t1
    left join (select ticketid, message from ticketnotes where message LIKE '%https://xxxx.zendesk.net/.../%') t2 on t2.ticketid = t1.tid 
    left join (select ticketid, message from ticketnotes where message LIKE '%Ticket ID%Issue Summary%Suggested Solution%') t3 on t3.ticketid = t1.tid 
WHERE
    t1.status = 'Closed' 
    AND t1.did = 7
    AND DATE(t1.date) BETWEEN DATE('2020-04-01') AND DATE('2020-04-30')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    • 2022-01-16
    • 2019-11-25
    • 2023-03-19
    • 2019-06-02
    • 1970-01-01
    相关资源
    最近更新 更多