Count in Load语句给我错误

时间:2017-11-19 21:09:24

标签: sql qlikview

这是我第一次使用qlikview,因为我有使用SQL的经验,所以非常简单。我正在为求职申请,但我有一个问题。我需要做一个计数声明。首先,最好的做法是将计数放入Load语句或Select语句中?还是取决于具体情况?其次,我目前在load语句中有它,它给了我一个错误。这是代码:

//This is the Order Details Table
OrderDetails:
LOAD OrderID & LineNo as OrderLineKey, OrderID, /*LineNo,*/ Discount, ProductID, Quantity, 
 UnitPrice, UnitPrice*Quantity*(1-Discount) as Sales, Count(ProductID) as ProductIDRecordCounter;
SQL SELECT OrderID, Discount, Quantity, ProductID, UnitPrice, LineNo
FROM `Order Details`
GROUP BY OrderID, ProductID, Discount, Quantity, UnitPrice, LineNo;

这是它给我的错误:

  

无效的表达式SQL SELECT OrderID,Discount,Quantity,ProductID,   UnitPrice,LineNo FROM Order Details GROUP BY OrderID,ProductID,   折扣,数量,UnitPrice,LineNo

在添加count语句之前(当然是语句工作所必需的组)之前它是有效的。

2 个答案:

答案 0 :(得分:0)

SQL语句将发出SQL查询,因此首先确保在对数据库执行SQL语句后运行的所有内容(例如使用SQL Management Studio,SQL Developer或其他一些工具可以使用测试SQL查询。)

LOAD语句描述了Qlik将对从前一个命令(另一个LOAD或SQL)接收的数据执行的其他步骤。乍一看,我会说你可以将LOAD语句中的大部分逻辑转移到SQL语句而不会造成太大的伤害。我会完全放弃在你的场景中使用额外的LOAD命令(在SQL命令之上)。

答案 1 :(得分:0)

同意布鲁诺。 如果可能移动Group By选择中的SQL语句。如果你的数据很小,你不会看到很大的速度差异,但是在大数据集上,速度是显而易见的(在SQL中快得多)

这样写Group By子句用于SQL语句,但实际的聚合函数在QlikView中,因此你得到错误。

如果您想保持这样(从SQL加载,然后在QlikView中汇总),您的代码应为:

OrderDetails:
LOAD 
  OrderID & LineNo as OrderLineKey, 
  OrderID, 
  /*LineNo,*/ 
  Discount, 
  ProductID, 
  Quantity, 
  UnitPrice, 
  UnitPrice * Quantity * (1-Discount) as Sales, 
  Count(ProductID) as ProductIDRecordCounter
GROUP BY 
  OrderID, 
  ProductID, 
  Discount, 
  Quantity, 
  UnitPrice, 
  LineNo;
SQL 
SELECT 
  OrderID, 
  Discount, 
  Quantity, 
  ProductID, 
  UnitPrice, 
  LineNo
FROM `Order Details`;