Sql 查询错误,无法正确显示
我的查询出错,我试图显示日期、数据名称(POS和非POS)和数据数量 期望输出:Sql 查询错误,无法正确显示,sql,oracle,syntax-error,Sql,Oracle,Syntax Error,我的查询出错,我试图显示日期、数据名称(POS和非POS)和数据数量 期望输出: 02/20/2014, POS, 40 02/20/2014, Non-POS, 15 查询: SELECT To_char(D.dtime_day, 'MM/dd/yyyy') FROM owner_dwh.dc_date d left join (SELECT Count(CASE WHEN Upper(t.ticket
02/20/2014, POS, 40
02/20/2014, Non-POS, 15
查询:
SELECT To_char(D.dtime_day, 'MM/dd/yyyy')
FROM owner_dwh.dc_date d
left join (SELECT Count(CASE
WHEN Upper(t.ticket_customer_user_id) = Upper(
'POS-generic')
THEN 1
ELSE NULL
END) --POS
||','
||Count(CASE
WHEN Upper(t.ticket_customer_user_id) = Upper
(
'hcphuser') THEN
1
ELSE NULL
END) --USER
FROM app_account.otrs_ticket t
WHERE Trunc(t.create_time, 'DAY') BETWEEN
SYSDATE - 119 AND SYSDATE - 1
GROUP BY Trunc(t.create_time, 'DAY'))
ON d.dtime_day = t.create_time
left join(SELECT Count(CASE
WHEN Upper(t.ticket_customer_user_id) = Upper(
'POS')
THEN 1
ELSE NULL
END) --POS
||','
||Count(CASE
WHEN Upper(t.ticket_customer_user_id) = Upper(
'user')
THEN 1
ELSE NULL
END) --USER
FROM app_account.otrs_ticket t
WHERE Trunc(t.close_time, 'DAY') BETWEEN SYSDATE - 119 AND
SYSDATE - 1
GROUP BY Trunc(t.close_time, 'DAY'))
ON d.dtime_day = t.close_time
WHERE t.queue_id NOT IN ( 63, 61, 69, 59,
58, 60, 56, 64,
65, 23, 67, 68, 57 );
我的错误:
ORA-00904: "T"."CREATE_TIME": invalid identifier
00904. 00000 - "%s: invalid identifier"
DTIME\u DAY(OWNER\u DWH.DC\u DATE)中的数据如下所示:
02/12/2014
02/13/2014
02/14/2014
在App_account.otrs.ticket中时
创建时间和关闭时间包含打开和关闭票据的日期
票证\客户\用户\ ID包含POS通用和用户(类似于类别)
请帮我纠正我的疑问。提前谢谢。您必须在括号外重复别名:
SELECT To_char(D.dtime_day, 'MM/dd/yyyy')
FROM (owner_dwh.dc_date d
left join (SELECT Count(CASE
WHEN Upper(t.ticket_customer_user_id) = Upper(
'POS-generic')
THEN 1
ELSE NULL
END) --POS
||','
||Count(CASE
WHEN Upper(t.ticket_customer_user_id) =
Upper(
'hcphuser') THEN
1
ELSE NULL
END), --USER
t.create_time -- !!!of course, did not think about returning the field from the subquery!!!
FROM app_account.otrs_ticket t
WHERE Trunc(t.create_time, 'DAY') BETWEEN
SYSDATE - 119 AND SYSDATE - 1
AND t.queue_id NOT IN ( 63, 61, 69, 59,
58, 60, 56, 64,
65, 23, 67, 68, 57 )
GROUP BY Trunc(t.create_time, 'DAY')) t
ON d.dtime_day = t.create_time)
left join(SELECT Count(CASE
WHEN Upper(t.ticket_customer_user_id) = Upper(
'POS')
THEN 1
ELSE NULL
END) --POS
||','
||Count(CASE
WHEN Upper(t.ticket_customer_user_id) = Upper(
'user')
THEN 1
ELSE NULL
END), --USER
t.close_time -- return from subquery!!!!
FROM app_account.otrs_ticket t
WHERE Trunc(t.close_time, 'DAY') BETWEEN SYSDATE - 119 AND
SYSDATE - 1
AND t.queue_id NOT IN ( 63, 61, 69, 59,
58, 60, 56, 64,
65, 23, 67, 68, 57 )
GROUP BY Trunc(t.close_time, 'DAY')) u
ON d.dtime_day = u.close_time --you can not use t twice for the joins!!!
这是我从您的查询中所能收集到的全部信息…对于oracle不太确定,但看起来您的联接没有别名。您的错误消息和查询不匹配-您的查询中没有创建时间。请显示您正在运行的真实查询以及您收到的真实错误消息。这是我在运行该查询时收到的真实错误。对不起,我只是oracleIs OWNER\u DWH.DC\u的初学者,表或列的名称是什么?看起来很奇怪。并且一个错误表示APP_ACCOUNT.OTRS_TICKET表中没有列CREATE_TIME。提供您的talbe结构。它在OTRS\U票证表中查找创建时间。您需要删除别名。仍然存在错误:ORA-00904:“T”。“创建时间”:无效标识符00904。00000-“%s:无效标识符”我编辑了查询,您必须-当然-从子查询返回字段。。。您的查询很难解释…:)很抱歉仍然有一个错误ORA-00979:不是表达式00979的组。00000-“不是表达式分组”如何显示左联接的结果?我是说“POS”和“用户”的总数?有约会吗?