2015-05-10 4 views
-1

У меня есть этот запросграф и результат от Inner Регистрация

SELECT COUNT(*) FROM (
SELECT 
    ART.LFDNR, 
    ARTSTLST.ARTIKELLFDNR, 
    Count(*) AS counts 
FROM 
    ARTIKEL ART 
    INNER JOIN ARTSTLST ON ARTSTLST.OARTIKELLFDNR = ART.LFDNR 
WHERE 
    ART.SUCHARTIKELNR = '22424' 
GROUP BY 
    ART.LFDNR, 
    ARTSTLST.ARTIKELLFDNR   ) 

, который приводит в моем случае в

3 

Но я хочу показать также результат внутреннего запроса

SELECT 
    ART.LFDNR, 
    ARTSTLST.ARTIKELLFDNR, 
    Count(*) AS counts 
FROM 
    ARTIKEL ART 
    INNER JOIN ARTSTLST ON ARTSTLST.OARTIKELLFDNR = ART.LFDNR 
WHERE 
    ART.SUCHARTIKELNR = '22424' 
GROUP BY 
    ART.LFDNR, 
    ARTSTLST.ARTIKELLFDNR 

, поэтому результат будет выглядеть следующим образом:

12345  34567  3 

Это результат результата selct plus Count().

+0

Просьба подробно рассказать, как должен выглядеть результат. – Rajesh

+1

Найдите время, чтобы описать, как выглядят ваши данные и какие результаты вы хотите. Если вы даже не будете пытаться задавать вопрос, почему кто-то должен приложить усилия, чтобы ответить на него? –

+0

Я изменил весь вопрос, я подумал, что это очень ясно. –

ответ

1

Это было бы легко с помощью оконных агрегатной функции:

SELECT 
    ART.LFDNR, 
    ARTSTLST.ARTIKELLFDNR, 
    Count(*) AS counts, 
    SUM(Count(*)) OVER() -- Group sum 
FROM 
    ARTIKEL ART 
    INNER JOIN ARTSTLST ON ARTSTLST.OARTIKELLFDNR = ART.LFDNR 
WHERE 
    ART.SUCHARTIKELNR = '22424' 
GROUP BY 
    ART.LFDNR, 
    ARTSTLST.ARTIKELLFDNR 

Но AFAIK только Firebird 3 (в настоящее время в бета-версии) поддерживает эти функции, так что вам нужен более сложный запрос с использованием Общего Table Expression:

WITH cte AS 
    ( 
    SELECT 
     ART.LFDNR, 
     ARTSTLST.ARTIKELLFDNR, 
     Count(*) AS counts 
    FROM 
     ARTIKEL ART 
     INNER JOIN ARTSTLST ON ARTSTLST.OARTIKELLFDNR = ART.LFDNR 
    WHERE 
     ART.SUCHARTIKELNR = '22424' 
    GROUP BY 
     ART.LFDNR, 
     ARTSTLST.ARTIKELLFDNR 
) 
SELECT cte.*, (SELECT SUM(counts) FROM cte) 
FROM cte 
+0

Ничего себе, я на самом деле думал, что это очень легко и просто моя нехватка знаний, но хорошо, что я спросил, это было бы для меня неразрешимым. Thanx! –

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