Я хочу выбрать строки из таблицы с вычисляемым полем, определенным запросом выбора.
Например, мой выбор может быть:
Select FirstName,
LastName,
iif(Cast('Now' as date)-BirthDate<18, 'Minor', 'Major') as StatAge
from TableUsers;
В Lazarus я хочуфильтр на StatAge.
Я попробовал свой запрос непосредственно в моей базе данных с помощью инструмента.
Я могу фильтровать с помощью Where в моем запросе так:
Select *
from (
Select FirstName,
LastName,
iif(Cast('Now' as date)-BirthDate<18, 'Minor', 'Major') as StatAge
from TableUsers
)
Where StatAge = 'Minor';
Но это не работает на Lazarus с TSQLQuery.Filter
Я могу фильтровать по другим полям и никаких проблем.Моя проблема только с этим вычисляемым полем.
Так что, возможно, мне нужно создать представление в моей базе данных?Но у меня возникла ошибка, когда я пытался добавить свое представление с помощью моего запроса.
Мой SQL-код для создания представления приведен ниже, а ошибка
"Неудачные метаданныеобновление не может отформатировать сообщение 8: 132 - файл сообщения C: \ WINDOWS \ SYSTEM32 \ firebird.msg не найден.
Я никогда не видел этого в прошлом:
CREATE VIEW "TSTT_SELECT" ("ID_SENT", "Eng", "Char", "ID_STT", "Order", "Stat", "StartSAE", "RetSAE", "ArrSAE", "StartSHE", "RetSAE")
AS
Select "EMAIL_SENT"."ID", "EMAIL_SENT"."COMMANDE_TABLE", "EMAIL_SENT"."CHAR", "TSTT"."ID", "TSTT"."ORDER", iif("TSTT"."RETOUR_PREV" Is Not Null AND ("TSTT"."RETOUR_PREV">cast('Now' as date)), 'En retard', iif("TSTT"."Depart_SAE" Is Null, 'A expedier', iif("TSTT"."Depart_SAE" Is Not Null And "TSTT"."Arrivee_SHE" Is Not Null And "TSTT"."Depart_SHE" is null,'Chez le STT',iif("TSTT"."Depart_SHE" Is Not Null, 'Au depart STT', iif("TSTT"."Arrivee_SAE" Is Not Null, 'Récéptionné', ''))))) as "Statut", "TSTT"."Depart_SAE", "TSTT"."RETOUR_PREV", "TSTT"."Arrivee_SHE", "TSTT"."Depart_SHE", "TSTT"."Arrivee_SAE"
from "EMAIL_SENT"
Left join "TSTT" on "EMAIL_SENT"."ID" = "TSTT"."ID_EMAIL";