Перенос кода доступа в синтаксис Oracle (Power Query) - PullRequest
1 голос
/ 08 мая 2019

Я просто работаю над тем, чтобы перенести запрос доступа в Power Query (Excel). Я думаю, что есть некоторые проблемы, касающиеся условий / формулировки. Это БД Oracle.

Оригинальный код выглядит так:

SELECT 
    POOLK.DATA.DOC, 
    Val(Min(Right([PNR],5))) AS Value, 
    POOLK.DATA.RE, 
    POOLK.DATA.ST INTO [tValue]
FROM 
    POOLK.DATA
GROUP BY 
    POOLK.DATA.DOC, 
    POOLK.DATA.RE, 
    POOLK.DATA.ST
HAVING (((POOLK.DATA.DOC)>25000) AND ((POOLK.DATA.RE)="B9"))
ORDER BY POOLK.DATA.DOC DESC

Это мой подход с тех пор:

SELECT
    LTRIM((SUBSTR(POOLK.DATA."PNR", -5)), '0') AS Value,
    POOLK.DATA.DOC,
    POOLK.DATA.RE,
    POOLK.DATA.ST
FROM 
    POOLK.DATA
WHERE   
    POOLK.DATA.DOC >25000
      AND 
    POOLK.DATA.RE ='B9'

Я получаю сбои с функциями HAVING и GROUP BY. Я думаю, где представлены другие ценности, верно?

У кого-нибудь есть идеи?

С наилучшими пожеланиями

1 Ответ

2 голосов
/ 08 мая 2019

Вам все еще нужно GROUP BY:

SELECT LTRIM(MIN(SUBSTR(D.PNR, -5)), '0') AS Value,
       D.DOC, D.RE, D.ST
FROM POOLK.DATA d
WHERE D.DOC > 25000 AND 
      D.RE ='B9'
GROUP BY D.DOC, D.RE, D.ST;

Я также добавил псевдонимы таблиц, чтобы код было легче писать и читать.

INTO создает таблицу,Если вы действительно хотите это сделать, то:

create table tvalue as
    SELECT LTRIM(MIN(SUBSTR(D.PNR, -5)), '0') AS Value,
           D.DOC, D.RE, D.ST
    FROM POOLK.DATA d
    WHERE D.DOC > 25000 AND 
          D.RE ='B9'
    GROUP BY D.DOC, D.RE, D.ST;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...