Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 查询错误,无法正确显示_Sql_Oracle_Syntax Error - Fatal编程技术网

Sql 查询错误,无法正确显示

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

我的查询出错,我试图显示日期、数据名称(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_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”和“用户”的总数?有约会吗?