Посмотрели, но ничего не нашли.

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

Я пробовал Case When, но все равно получаю фактическую дату, а не исходную дату.

Сценарий должен использоваться в Excel для извлечения отчета, и я просто хочу скрыть бесполезную информацию, если я могу.

Итак, я пробую следующее:

   SELECT Pickup_Date,
       Pickup_Time,
       Pickup,
       CASE
           WHEN Product_Service = 'AC' THEN DROPOFF_DATE
           WHEN Product_Service = 'CR' THEN DROPOFF_DATE
           WHEN Product_Service = 'FL' THEN DROPOFF_DATE
           ELSE ''
       END AS DropoffDate,
       Dropoff_Time,
       Dropoff,
       Remarks,
       Agent_Price_Inc,
       Service_Cost_Inc
FROM OPSView

Поле DROPOFF_DATE является типом даты и времени.

Есть ли возможность это сделать?

Любая помощь приветствуется.

1
Ozbear 30 Дек 2013 в 13:58

2 ответа

Лучший ответ

Возврат VarChar не смешивается с возвратом DataTime. Используйте 'NULL' вместо пустого varchar ''.

Вы можете проверить путем тестирования:

select getdate()
union
select null

--Result
NULL
2013-12-30 11:17:08.517

Вместо того:

select getdate()
union
select ''

--Result:
1900-01-01 00:00:00.000
2013-12-30 11:17:39.577

Ответ на ваш вопрос:

SELECT Pickup_Date,
       Pickup_Time,
       Pickup,
       CASE
           WHEN Product_Service = 'AC' THEN DROPOFF_DATE
           WHEN Product_Service = 'CR' THEN DROPOFF_DATE
           WHEN Product_Service = 'FL' THEN DROPOFF_DATE
           ELSE NULL -- Return null instead of ''
       END AS DropoffDate,
       Dropoff_Time,
       Dropoff,
       Remarks,
       Agent_Price_Inc,
       Service_Cost_Inc
FROM OPSView
4
Ralf de Kleine 30 Дек 2013 в 10:15

Пытаться,

CASE
       WHEN Product_Service = 'AC' THEN CAST(DROPOFF_DATE AS VARCHAR)
       WHEN Product_Service = 'CR' THEN CAST(DROPOFF_DATE AS VARCHAR)
       WHEN Product_Service = 'FL' THEN CAST(DROPOFF_DATE AS VARCHAR)
       ELSE ''
END AS DropoffDate,
0
Nalaka526 30 Дек 2013 в 10:07