我想写一个select语句。
- 如果列SCHEDULE_STATUS中的值为">SCHEDURED",则结果中只需要打印列SCHEDULED_ON
- 如果SCHEDULE_STATUS列中的值为">NOT_SCHEDULED",则不在结果中打印SCHEDULED_ON
1.如果Schedule_Status=NOT_SCHEDULED,则SCHEDULED_On列不应出现在结果中。
Actual Result:
+------+-----------------+--------------------+
| Name | Schedule_Status | Scheduled_On |
+------+-----------------+--------------------+
| ABC | NOT_SCHEDULED | 29-FEB-20 23:30:50 |
+------+-----------------+--------------------+
Expected Result:
+------+-----------------+
| Name | Schedule_Status |
+------+-----------------+
| ABC | NOT_SCHEDULED |
+------+-----------------+
- 如果Schedule_Status=SCHEDULED,则SCHEDULED_On列应显示在结果中
Actual Result:
+------+-----------------+--------------------+
| Name | Schedule_Status | Scheduled_On |
+------+-----------------+--------------------+
| ABC | SCHEDULED | 29-FEB-20 23:30:50 |
+------+-----------------+--------------------+
Expected Result:
+------+-----------------+--------------------+
| Name | Schedule_Status | Scheduled_On |
+------+-----------------+--------------------+
| ABC | SCHEDULED | 29-FEB-20 23:30:50 |
+------+-----------------+--------------------+
在第二个标准中,实际结果和预期结果是一样的,我担心的只是第一个标准。
请帮我确定第一个标准。
您可以尝试使用CASE语句来实现所需的输出。检查以下逻辑-
SELECT
CASE
WHEN SCHEDULE_STATUS = 'SCHEDULED' THEN SCHEDULED_ON
ELSE NULL
END
FROM your_table
根据您的说明,您可以使用一个简单的select语句,其中WHERE条件如下-
SELECT *
FROM your_table
WHERE SCHEDULE_STATUS = 'SCHEDULED'
这是实现您所需目标的多种方法之一:
-
*
从表中选择所有列数据,如果不想显示最后一列,则只选择前两列, -
t1是您当前的表格,
-
查询表以仅检索
Schedule_Status
为NOT_SCHEDULED
的数据。SELECT Name, Schedule_Status FROM t1 WHERE t1.Schedule_Status = "NOT_SCHEDULED";