2016-11-16 16 views
5

Bir tablodan bir birleşim oluşturmaya ve kimliğe göre bazı alanları toplamaya çalışıyorum. Bu bölüm harika çalışıyor. Ayrıca, ek bir sütun eklemeye ve deyim oluşturmak istediğimde bir davanın kullanılmasına çalışıyorum. Anahtar kelime hatası eksik:GROUP BAŞLANGIÇ SONRA

Burada komut dosyası

CREATE TABLE TABLE1 
AS 
    SELECT ID, IDC, SUM(AMOUNT) PRICE, SUM(COST) COST, SUM(AMOUNT-COST) PROFIT, 
    CASE PROFIT 
    WHEN PROFIT < 1000 THEN 'Low' 
    WHEN PROFIT < 5000 THEN 'Medium' 
    ELSE 'High' 
    END AS PROFITLEVEL 
    FROM 
    (SELECT DISTINCT ID, IDC, AMOUNT, COST 
    FROM ORDER_ITEMS 
    LEFT JOIN ORDERS 
    ON ID = IDC) 
    GROUP BY ID, IDC; 

Ancak bu bir ORA-00905 döndürür.

Herhangi bir yardım

+3

Geçersiz CASE sözdizimi. (Diğerleri arasında ...) Ne zaman yapın ... '. Ama yine de sütun sütunlarını PROFIT kullanamazsınız ... – jarlh

+0

"Yazım hatası veya yeniden üretilememesinden dolayı" olarak işaretlemek için bunu işaretleyen dufus hakkında soru - Ne yazım hatası? Sorun nasıl yeniden üretilemez? (Sadece dünyaya soruyorum, çünkü bu dufus'un, kapanış sorusunu işaretlemeyi bile hatırlaması pek mümkün değildir.) – mathguy

cevap

5

Yanlış bir şekilde CASE kullandığınız takdir; Ayrıca, PROFIT takma adını tanımladığınız aynı düzeyde kullanmaya çalışın.

kişinin size CASE düzenlemek ve yerine takma PROFIT ait PROFIT verir ifadesini kullanmak gerekir:

CREATE TABLE TABLE1 AS 
     SELECT ID, 
      IDC, 
      SUM(AMOUNT) PRICE, 
      SUM(COST) COST, 
      SUM(AMOUNT - COST) PROFIT, 
      CASE 
       WHEN SUM(AMOUNT - COST) < 1000 THEN 'Low' 
       WHEN SUM(AMOUNT - COST) < 5000 THEN 'Medium' 
       ELSE 'High' 
      END AS PROFITLEVEL 
     FROM (SELECT DISTINCT ID, 
           IDC, 
           AMOUNT, 
           COST 
       FROM ORDER_ITEMS LEFT JOIN ORDERS ON ID = IDC) 
    GROUP BY ID, IDC; 

Eğer CASE Eğer tek değerleri kontrol gerekiyorsa yararlıdır kullanmaya çalıştı yolu; örneğin:

+0

Bu işe yarıyor. Takma adlarını aynı düzeyde kullanamadığımı bilmiyordum. Ama ben durumun ne zaman ve ne zaman? – Akaitenshi

+0

Sadece küçük bir örnek ekledim – Aleksej

+0

Oh anladım. Yardım için teşekkürler – Akaitenshi