2017-08-28 98 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)