Как напечатать / выбрать столбец на основе результата другого столбца в SQL - PullRequest
0 голосов
/ 03 марта 2020

Я хочу написать оператор выбора.

  • Если значение в столбце: SCHEDULE_STATUS равно " SCHEDULED ", то только столбец: 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 |
+------+-----------------+--------------------+

Во втором критерии фактический результат и ожидаемый результат совпадают, My беспокоиться только о первых критериях.

Пожалуйста, помогите мне один из первых критериев.

Ответы [ 2 ]

1 голос
/ 03 марта 2020

Вы можете попробовать с оператором CASE, чтобы достичь желаемого результата. Проверьте это ниже logi c -

SELECT 
CASE 
    WHEN SCHEDULE_STATUS = 'SCHEDULED' THEN SCHEDULED_ON
    ELSE NULL
END 
FROM your_table

Согласно вашему пояснению, вы можете использовать простой оператор выбора с условием WHERE, как показано ниже -

SELECT * 
FROM your_table
WHERE SCHEDULE_STATUS = 'SCHEDULED'
0 голосов
/ 03 марта 2020

Это один из многих способов достичь желаемого:

  1. * выбирает данные всех столбцов из таблицы, если вы не хотите показывать этот последний столбец, то просто выберите первые два столбца,

  2. t1 - ваша текущая таблица,

  3. Запросите таблицу, чтобы получить только те данные, для которых Schedule_Status NOT_SCHEDULED.

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