2017-08-28 74 views
0

*對不起,我犯了一些錯誤和粗俗的舉止。AlaSql支持GROUPING功能嗎?

現在我試圖與AlaSql銷售總結報告,我的繼承人代碼:

 var testData = [ 
 
    { Area: "Area 1", Shop: "Shop 1", Val: 5 }, 
 
    { Area: "Area 1", Shop: "Shop 2", Val: 20 }, 
 
    { Area: "Area 2", Shop: "Shop 1", Val: 25 }, 
 
    { Area: "Area 2", Shop: "Shop 2", Val: 40 } 
 
    ]; 
 
    
 
    
 
    res = alasql('SELECT CASE WHEN \ 
 
    GROUPING(Area) = 1 THEN "ALL" ELSE MAX(Area) END AS Area, \ 
 
    CASE WHEN GROUPING(Area) = 1 THEN "TOTAL" \ 
 
    GROUPING(Shop) = 1 THEN "SUBTOTAL" ELSE MAX(Shop) END AS Shop,\ 
 
    SUM(Val) AS Val \ 
 
    INTO HTML("#res1",{headers:true}) FROM ? \ 
 
    GROUP BY ROLLUP(Area,Shop)', [testData]);
table {border:1px solid black}
<script src="https://cdn.jsdelivr.net/alasql/0.3/alasql.min.js"></script> 
 
<p>ROLLUPTEST()</p><div id="res1"></div>

我希望展現表的價值總結。

{ Area: "Area 1", Shop: "Shop 1" , Val: 5 }, 
{ Area: "Area 1", Shop: "Shop 2" , Val: 20 }, 
{ Area: "Area 1", Shop: "SUBTOTAL", Val: 25 }, 
{ Area: "Area 2", Shop: "Shop 1" , Val: 25 }, 
{ Area: "Area 2", Shop: "Shop 2" , Val: 40 }, 
{ Area: "Area 2", Shop: "SUBTOTAL", Val: 65 }, 
{ Area: "ALL" , Shop: "TOTAL" , Val: 90 }, 

但是當運行它時,調試器顯示「腳本錯誤」。 並且在瀏覽器中沒有顯示錶格。

我猜測AlaSql不支持GROUPING函數。 如果有人知道這件事,請告訴我。

+0

只是爲了記錄,你的'testData'不是一個有效的對象數組....你能修復'Task:Val:x'部分嗎? – Hackerman

+0

也可能是一個錯字'GROUPNIG'應該是'GROUPING' – Hackerman

+0

歡迎來到堆棧溢出!尋求調試幫助的問題(「爲什麼這個代碼不工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現問題所需的最短代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:如何創建[mcve]。使用「編輯」鏈接來改善你的*問題* - 不要通過評論添加更多信息。謝謝! – GhostCat

回答

0

沒有,AlaSQL知道GROUPING keyword只在另一種情況下,即在GROUPING SETS

GROUP BY GROUPING SETS(Area, Shop) 

如果您AreaShop領域都是非空,那麼你可以解決它,如下所示:

SELECT CASE WHEN Area IS NULL THEN "ALL" ELSE Area END AS Area, 
     CASE WHEN Shop IS NULL THEN 
      CASE WHEN Area IS NULL THEN "TOTAL" ELSE "SUBTOTAL" END 
      ELSE Shop 
     END as Shop, 
     SUM(Val) AS Val 
INTO  HTML("#res1", {headers:true}) 
FROM  ? 
GROUP BY ROLLUP(Area,Shop)