2017-09-23 93 views
0

我在PLSQL查找值組成的彙總查詢

Company | StoreNum | Sku | Units | Dollars 
  • 首先查詢下表:

    select company, storeNum, sku, SUM(units) AS Units, SUM(dollars) AS dollars 
    FROM Sales 
    GROUP BY company, storeNum, sku 
    
  • 第二個查詢:

    select COUNT(DISTINCT company), COUNT(DISTINCT(storeNum), sku, 
    SUM(units) AS Units, SUM(dollars) AS dollars 
    FROM Sales 
    GROUP BY sku 
    HAVING COUNT(DISTINCT company) >= 2 
    

第二個查詢獲得sku的總計,其中至少兩個companies銷售sku。我需要一種方法能夠找出公司,商店是否構成這個清單?

回答

0

您可以使用LISTAGG獲取逗號分隔的公司列表和商店列表,如下所示。

SELECT LISTAGG(company,',') WITHIN GROUP (
ORDER BY company) company_list, 
    LISTAGG(StoreNum,',') WITHIN GROUP (
ORDER BY storeNum) Store_list, 
    COUNT(DISTINCT company), 
    COUNT(DISTINCT storeNum), 
    sku, 
    SUM(units) AS Units, 
    SUM(dollars) AS dollars 
FROM Sales 
GROUP BY sku 
HAVING COUNT(DISTINCT company) >= 2; 

注意:這適用於Oracle 11g以上。