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