2016-07-08 3 views
0
My Query: 
SELECT Case When msa_high>=50 AND msa_high<=60 then 'low' 
      When msa_high>60 AND msa_high>=70 then 'medium' 
      When msa_high>70 then 'high' end as edu_lv , Sum(rev)/Sum(S_days) AS avg_sales           
from store_msa left join(Select 
(EXTRACT(YEAR FROM t.saledate)||'-'|| 
EXTRACT(MONTH FROM t.saledate) ||'-'|| 
t.store) AS mys,COUNT(DISTINCT t.saledate) AS S_days, sum(t.amt) AS rev 
From trnsact t 
Where (t.saledate)<'2005-08-01' AND t.stype='P' AND mys IN 
(SELECT 
(EXTRACT(YEAR FROM t.saledate)||'-'|| 
EXTRACT(MONTH FROM t.saledate) ||'-'|| 
t.store) AS mys 
FROM trnsact t 
HAVING COUNT(DISTINCT t.saledate)>20 
GROUP BY mys,t.store)) AS rev 
ON store_msa.store=rev.store 
Group By edu_lv,avg_sales 
Order By avg_sales; 

Может кто-то один указать, какой параметр был упущен, чтобы найти решение этой ошибки и во-вторых, к какой группе По утверждению генерирует эта ошибка.Ошибка при запуске запроса на Teradata-Selected, не агрегированные значения должны быть частью соответствующей группы

ответ

1

две проблемы, увидеть мои встроенные комментарии (после форматирования кода Surce, чтобы сделать его доступным для чтения)

SELECT 
    Case 
     When msa_high>=50 
     AND msa_high<=60 
     then 'low' 
     When msa_high>60 
     AND msa_high>=70 
     then 'medium' 
     When msa_high>70 
     then 'high' 
    end as edu_lv , 
    Sum(rev)/Sum(S_days) AS avg_sales 
from 
    store_msa 
left join 
    (Select 
     (EXTRACT(YEAR FROM t.saledate)|| '-'|| 
     EXTRACT(MONTH FROM t.saledate) || '-'|| 
     t.store) AS mys, 
     COUNT(DISTINCT t.saledate) AS S_days, 
     sum(t.amt) AS rev 
    From 
     trnsact t 
    Where (t.saledate)<'2005-08-01' 
     AND t.stype='P' 
     AND mys IN 
     (SELECT 
      (EXTRACT(YEAR FROM t.saledate)|| '-'|| 
       EXTRACT(MONTH FROM t.saledate) || '-'|| 
       t.store) AS mys 
     FROM 
      trnsact t 
     HAVING 
      COUNT(DISTINCT t.saledate)>20 
     GROUP BY 
      mys, 
      t.store 
     ) 
    -- ***** missing GROUP BY, probably mys, store again? ***** 
) AS rev ON store_msa.store=rev.store 
Group By 
    edu_lv, 
    avg_sales -- ***** remove this, can't group by an aggregated column ***** 
Order By 
    avg_sales; 
+0

Привет, Он работал, написав ту же группу, по заявлению, но теперь он говорит, что rev.store не существуют в базе данных. В заявлении ON ON store_msa.store = rev.store Код ошибки - 3810 Сообщение об ошибке - [База данных Teradata] [TeraJDBC 15.10.00.05] [Ошибка 3810] [SQLState 42S22] Столбец/параметр «UA_DILLARDS.rev.store» не существовать. –

+0

Вам нужно добавить его в Select-list – dnoeth

+0

Привет, да проблема решена, но запрос продолжает работать, не знаю почему. может быть что-то неправильно с логикой запроса. Спасибо за помощь. (Не могли бы вы сообщить мне, есть ли логическая ошибка в запросе) –