2011-03-19 3 views
1

Это сервер скрипт SQL, который должен быть включен в Oracle 11g:SQL Server для PL/SQL

select p.locale, q.everecondis, [0] as No, [1] as Yes, 
[0]* 100.0/([0] + [1]) as [pctNo], 
[1]* 100.0/([0] + [1]) as [pctYes] 
from 
(select p.locale, q.everecondis, s.enr1yr 
from s, q, p 
where s.student_info_key = q.student_info_key 
and s.pse_school_key = p.pse_school_key and s.enr1yr >=1) as tbl 
pivot 
(count(enr1yr) for enr1yr in ([0],[1])) as pvt 
order by locale, everecondis 

Как я могу получить это работать в PL/SQL на Oracle 11g? (Новое для PL/SQL)

+0

Каков ваш (конкретный) вопрос? – BoltClock

+0

Как превратить его в PL/SQL для работы на Oracle 11g? – cdub

+0

Попробуйте запустить его в Oracle и исправить все, что сломано. Оба основаны на SQL, поэтому основы одинаковы. Это специфические для вендора функции/соглашения, которые будут отличаться. Так что просто исправить любые функции не то же самое. – richard

ответ

3

Запрос не имеет смысла, поскольку s.enr1yr >= 1 в предложении WHERE исключает записи, которые вы пытаетесь подсчитать позже, но литеральный переписывать, который должен работать как в SQL Server, так и в Oracle AFAIK является

SELECT p.locale, 
     q.everecondis, 
     COUNT(CASE WHEN s.enr1yr = 0 THEN 1 END) AS No, 
     COUNT(CASE WHEN s.enr1yr = 1 THEN 1 END) AS Yes, 
     AVG(CASE WHEN s.enr1yr = 0 THEN 100.0 ELSE 0.0 END) AS [pctNo], 
     AVG(CASE WHEN s.enr1yr = 1 THEN 100.0 ELSE 0.0 END) AS [pctYes] 
FROM s 
     JOIN q 
     ON s.student_info_key = q.student_info_key 
     JOIN p 
     ON s.pse_school_key = p.pse_school_key 
WHERE s.enr1yr IN (0,1) 
GROUP BY p.locale, 
     q.everecondis  
ORDER BY p.locale, 
     q.everecondis 

Я изменил положение WHERE к s.enr1yr IN (0,1), как кажется, на сегодняшний день является наиболее вероятной желаемой семантикой. Дайте мне знать, если это не так!

+0

Я думаю, что это просто '<' неверно напечатан как '>', то есть '<= 1' – RichardTheKiwi

+1

Вам нужно' ELSE 0.0' для AVG – RichardTheKiwi

+0

@Richard - Да, только что заметил, что когда я щелкнул, чтобы увидеть ваш предыдущий комментарий , благодаря! –

Смежные вопросы