Mysql 需要访问由条件定义的表的字段
我需要访问由查询中的条件定义的数据库表的字段。我需要访问SERVICE_LEG列并从该列筛选数据Mysql 需要访问由条件定义的表的字段,mysql,Mysql,我需要访问由查询中的条件定义的数据库表的字段。我需要访问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.endda
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;
谢谢。使用外部子查询来实现这一点
演示:
使用外部子查询来实现这一点
演示:
“TO_服务”和“FROM服务”的列名应该用倒勾“and not”括起来,因为这会使其变为变量
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
) a
where a.SERVICE_LEG="put_condition_here"
;
“TO_服务”和“FROM服务”的列名应该用倒勾“and not”括起来,因为这会使其变为变量
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
) a
where a.SERVICE_LEG="put_condition_here"
;
例如,可以使用公共表表达式
WITH CTE(countryname,serviceprovideractorwid,id ...., SERVICE_LEG,... )
AS
(
SELECT
pa1.countryname,
pw.serviceprovideractorwid,
pa2.id,
...
CASE
WHEN pw.enddate < pof.retdate THEN 'TO_SERVICE'
ELSE 'FROM SERVICE'
END AS "SERVICE_LEG",
...
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 CTE
WHERE SERVICE_LEG = "your_condition"
例如,可以使用公共表表达式
WITH CTE(countryname,serviceprovideractorwid,id ...., SERVICE_LEG,... )
AS
(
SELECT
pa1.countryname,
pw.serviceprovideractorwid,
pa2.id,
...
CASE
WHEN pw.enddate < pof.retdate THEN 'TO_SERVICE'
ELSE 'FROM SERVICE'
END AS "SERVICE_LEG",
...
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 CTE
WHERE SERVICE_LEG = "your_condition"
好的,它可以这样访问。如果我需要访问此表中WHERE子句上的服务。不是在桌子外面。在最后一个join语句之后…好的,它可以像这样访问。如果我需要访问此表中WHERE子句上的服务。不是在桌子外面。在最后一个join语句之后。。。