Сгруппировать по одному столбцу в Oracle - PullRequest
0 голосов
/ 19 марта 2019

В моем проекте есть требование, когда мой запрос на выборку возвращает несколько столбцов, но для суммирования суммы, которую я должен сгруппировать по одному столбцу.Подробности приведены ниже.

Пример: это всего лишь пример, так как мой запрос очень большой с несколькими объединениями.

    Table -tb1

    ---------------------------

        CASE | Amount | Customer
        ---------------------------
        CS001| 50     | 1
        ---------------------------
        CS003| 100    | 2
        ---------------------------
        CS001 | 2000  | 3

Table -tb2
            ---------------------------
            Customer | Name| Age
            ---------------------------
            1| John | 69
            ---------------------------
            2| Robert| 23
            ---------------------------
            3| Tammy| 23
            ---------------------------

Теперь я хотел бы получить все записи, присоединившись к этим 2стол, но с суммой Сумма .Итак, я бы хотел сгруппировать только по CASE

Спасибо за помощь заранее.

Ответы [ 3 ]

0 голосов
/ 20 марта 2019

Это то, что вы хотите?

select tb1.*, tb2.*, sum(amount) over (partition by case) as case_amount
from tb1 join
     tb2
     on tb1.customer = tb2.customer;
0 голосов
/ 21 марта 2019

При группировании каждый столбец, отображаемый в списке SELECT, должен быть либо частью списка GROUP BY, либо к нему должна быть применена агрегатная функция (например, COUNT, SUM, MAX и т. Д.).

SELECT
    t1."CASE", t2.Customer, t2.Name, t2.Age, SUM(t1.Amount) As TotalAmount
FROM
    tbl1 t1
    INNER JOIN tbl2 t2
        ON t1.Customer = t2.Customer
GROUP BY
    t1."CASE", t2.Customer, t2.Name, t2.Age

Поскольку CASE является зарезервированным словом в SQL, я избежал его путем Oracle, заключив его в двойные кавычки.

0 голосов
/ 19 марта 2019

Это то, что вы хотите? Я использовал соединение с группой. Вы можете использовать левое или правое объединение, чтобы иметь больше записей, если существует в table1 или 2

   Select 
    a.[case] -- CASE is a  reservedkeyword
     ,a.customer,sum(amount),
   b.name,b.age from table1 a
     join -- or left join/right join
    table2 b
     on 
       a.customer=b.customer
       group by a.case
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...