SQL通过将值填充为“0”的查询创建新字段名;0“;或;1“;

SQL通过将值填充为“0”的查询创建新字段名;0“;或;1“;,sql,Sql,我有一个名为status的字段,其中有许多记录,只有3个可能的值:open、open\u rementer\u sent和received\u complete。我想编写执行以下操作的SQL代码: 如果状态字段中的记录值为“打开”,则创建一个名为“打开”的新字段,如果记录为“打开”,则用数字值“1”填充该字段;如果记录已打开或已发送,则用数字值“0”填充该字段;或者 收到您的完整信息 如果“状态”字段中的记录的值为“已发送打开提醒”,则创建一个名为“已发送打开提醒”的新字段,如果记录为“已发送

我有一个名为status的字段,其中有许多记录,只有3个可能的值:open、open\u rementer\u sent和received\u complete。我想编写执行以下操作的SQL代码:

  • 如果状态字段中的记录值为“打开”,则创建一个名为“打开”的新字段,如果记录为“打开”,则用数字值“1”填充该字段;如果记录已打开或已发送,则用数字值“0”填充该字段;或者 收到您的完整信息

  • 如果“状态”字段中的记录的值为“已发送打开提醒”,则创建一个名为“已发送打开提醒”的新字段,如果记录为“已发送打开提醒”,则在该字段中填充一个数字值“1”;如果记录为“已打开”或“已收到提醒”或“已完成”,则在该字段中填充一个数字值“0”

对于任何值为“received_complete”的记录,我也希望这样做

下面是我现在使用的代码: 有人能给我提供一些关于SQL代码的建议吗

LOCATE(' ', `status`) = "OPEN",
        SUBSTRING(`status`, 1, LOCATE(' ', `status`) - 1),
        `status`
    ) AS OPEN,

 LOCATE(' ', `status`) = "OPEN_REMINDER_SENT",
        SUBSTRING(`status`, 1, LOCATE(' ', `status`) - 1),
        `status`
    ) AS OPEN_REMINDER_SENT,

 LOCATE(' ', `status`) = "RECEIVED_COMPLETE",
        SUBSTRING(`status`, 1, LOCATE(' ', `status`) - 1),
        `status`
    ) AS RECEIVED_COMPLETE

我认为您需要的是一个
案例
声明:

CASE WHEN status = 'open' THEN 1 ELSE 0 END AS 'open'
CASE WHEN status = 'open_reminder_sent' THEN 1 ELSE 0 END AS 'open_reminder_sent'

这一部分令人困惑:
如果状态字段中的记录值为“打开”,则创建一个名为“打开”的新字段,如果记录为“打开”,则用数字值“1”填充该字段;如果记录为“打开”、“发送提醒”、“接收完成”,则用数字值“0”填充该字段。
。第一部分不是意味着
状态
字段为“打开”,因此新列将始终为
1