2016-04-06 12 views
0

kullanırken belirsiz şekilde tanımlanmış bir sütun Sorguma bir göz atabilir misiniz? yorumlanmış alanlardan herhangi birini yorumlamaya çalıştığımda, oracle hatayı atar.ORA-00918: pivot

SELECT * 
FROM ( 
       SELECT ratfac.rating_id, 
        ratfac.label_en, 
        ratfac.ratingmodel_factor_id, 
        ratfac.weight, 
        ratfac.rating_calculated, 
        ratfac.rating, 
        ratfac.rating_adjusted, 
        ratfac.override_comment, 
        ratfac.rating_override, 
        ratfac.notch_value, 
        ratfac.notch_value_calculated, 
        ratfac.notch_value_adjusted, 
        ratfac.score, 
        ratfac.score_calculated, 
        ratfac.score_adjusted, 
        ratfac.factor_comment 
       FROM vw_ratingfactor ratfac) pivot (min(ratingmodel_factor_id) ratingmodel_factor_id, min(weight) weight, min(rating_calculated) rating_calculated, min(rating) rating, 
     --MAX(RATING_ADJUSTED) as RATING_ADJ, 
     min(override_comment) override_comment, min(rating_override) rating_override, min(notch_value) notch_value, 
     --MIN(NOTCH_VALUE_CALCULATED) NOTCH_VALUE_CALCULATED, 
     --MIN(NOTCH_VALUE_ADJUSTED) NOTCH_VALUE_ADJUSTED, 
     min(score) score, min(score_calculated) score_calculated, min(score_adjusted) score_adjusted, min(factor_comment) factor_comment FOR label_en IN ('Market' 
                                           || chr(38) 
                                           ||'Competitiveness'  AS marketcompetitiveness, 
                                         'Industry'      AS industry, 
                                         'Company Strategy and Management' AS company_stratergy_mgmt, 
                                         'Financial Performance'   AS financial_performance, 
                                         'Need for and Access to Funds' AS needforfunds)) 
+0

sen corrrectly takma max (rating_adjusted) – cableload

+0

gelen o benim gün kurtardı 2 defa tis, yine –

cevap

0

Sorun, döndürülen sütunlar için oluşturulan sütun adlarının uzunluğudur.

Sahip olduğunuz en uzun önek, 22 karakter olan company_stratergy_mgmt şeklindedir. Altçizgi, birleştirme takma adından önce otomatik olarak eklenir, böylece the 30-character column name limit'u vurmadan önce yalnızca 7 karakter kalır. Oracle, oluşturulan adı 30-char sınırında sessizce kırpıyor ve bu da kopyalara neden oluyor.

Bazı topaklar, örn. company_stratergy_mgmt_rating - 29 karakterden oluşan rating. Daha sonra rating_% gibi bir adında sahip olabilirsiniz. Ama iki tane var, bu yüzden gibi adlar oluşturmaya çalışır:

company_stratergy_mgmt_rating_calculated -> company_stratergy_mgmt_rating_ 
company_stratergy_mgmt_rating    OK 
company_stratergy_mgmt_rating_override -> company_stratergy_mgmt_rating_ 

Hem company_stratergy_mgmt_rating_calculated ve company_stratergy_mgmt_rating_overrideaynı 30 karakterlik isim, company_stratergy_mgmt_rating_ kesilir. Ve aynı oldukları gibi, sütun adı bir kopyası, dolayısıyla ORA-00918 hatasıdır.

Diğerleri aynı soruna sahiptir, bunlar sadece örneklerdir. company_stratergy yazımını r ekini kaybetmek için düzeltdiyseniz, bu sütunlarla birlikte alıkoyacaksınız ve rating_adjustment topluluğunu ard arsanız bile, _a, _c ve _o ile sona erecek ve tekrar benzersiz olacaktır. Ama yine de notch_value_% topluluğunu uncommented eğer aynı sorunu alırsınız.

Bu nedenle, daha kısa önekler veya daha kısa kümeler takma adlarını seçmeniz gerekir; böylece oluşturulan adların tümü tercihen kesilmez ve kısaltılmışlarsa yine de benzersizdirler.

+0

sayesinde çalışmadığını denedi olduğu belli olan tablo göre ben bir bira borçlu düşünebiliriz –