我需要访问由查询条件定义的数据库表的字段。我需要访问 SERVICE_LEG 列并从该列过滤数据。
SELECT
pa1.countryname,
pw.serviceprovideractorwid,
pa2.id,
pw.orderid,
pw.issorderref,
po.modelcode,
pw.itemid,
pe1.eventcode AS STARTEVENTCODE,
pe2.eventcode AS ENDEVENTCODE,
CASE
WHEN pw.enddate < pof.retdate THEN 'TO_SERVICE'
ELSE 'FROM SERVICE'
END AS "SERVICE_LEG",
pa1.roleid,
pad.activitycode,
pw.tat,
pw.totelapse
FROM phwactivitydetail pw
JOIN phdactor pa1 ON pa1.actorwid = pw.orderissactorwid
JOIN phdactor pa2 ON pa2.actorwid = pw.serviceprovideractorwid
JOIN phdobject po ON po.objectwid = pw.objectwid
JOIN phdevent pe1 ON pe1.eventwid = pw.starteventwid
JOIN phdevent pe2 ON pe2.eventwid = pw.endeventwid
JOIN phaorderflowcatch pof ON pof.orderdid = pw.orderdid
JOIN phxactivitydef pad ON pad.activitydefdid = pw.activitydefdid
JOIN gldcalendar gc ON gc.datenum = pw.enddatenum;
谢谢。
最佳答案
使用外部子查询
来实现。
演示:
SELECT *
FROM
(
SELECT
pa1.countryname,
pw.serviceprovideractorwid,
pa2.id,
pw.orderid,
pw.issorderref,
po.modelcode,
pw.itemid,
pe1.eventcode AS STARTEVENTCODE,
pe2.eventcode AS ENDEVENTCODE,
CASE
WHEN pw.enddate < pof.retdate THEN 'TO_SERVICE'
ELSE 'FROM SERVICE'
END AS "SERVICE_LEG",
pa1.roleid,
pad.activitycode,
pw.tat,
pw.totelapse
FROM phwactivitydetail pw
JOIN phdactor pa1 ON pa1.actorwid = pw.orderissactorwid
JOIN phdactor pa2 ON pa2.actorwid = pw.serviceprovideractorwid
JOIN phdobject po ON po.objectwid = pw.objectwid
JOIN phdevent pe1 ON pe1.eventwid = pw.starteventwid
JOIN phdevent pe2 ON pe2.eventwid = pw.endeventwid
JOIN phaorderflowcatch pof ON pof.orderdid = pw.orderdid
JOIN phxactivitydef pad ON pad.activitydefdid = pw.activitydefdid
JOIN gldcalendar gc ON gc.datenum = pw.enddatenum
) t
WHERE t.SERVICE_LEG > 100;
关于mysql - 需要访问由条件定义的表的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36330948/