如何根据SQL中另一列的结果打印/选择一列



我想写一个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   |
+------+-----------------+
  1. 如果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'

这是实现您所需目标的多种方法之一:

  1. *从表中选择所有列数据,如果不想显示最后一列,则只选择前两列,

  2. t1是您当前的表格,

  3. 查询表以仅检索Schedule_StatusNOT_SCHEDULED的数据。

    SELECT Name, Schedule_Status
    FROM t1 
    WHERE t1.Schedule_Status = "NOT_SCHEDULED";
    

最新更新