2017-11-19 8 views
0

これは初めてのqlikviewです。これはSQLの経験があるので非常に簡単です。私は就職のためにやっていますが、1つ問題があります。私はカウントステートメントをする必要があった。まず、ロードステートメントまたは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; 

、これはそれが私に与えているエラーです:

受注BY Order Detailsグループから無効な表現SQL SELECT受注コード、割引、数量、商品コード、 単価、LINENO、商品コード、 割引、数量、単価、LINENO

それは、WOの文の前に必要であることにより、グループカウント文を追加する(そしてもちろん働いていましたrk)

答えて

0

SQL文はSQLクエリを発行するので、まず、SQL Management Studio、SQL Developerなどのツールを使用して、データベースに対して実行したときに、SQL文が実行された後のすべてが実行されていることを確認します。 SQLクエリをテストすることができます)。

LOADステートメントは、Qlikが前のコマンド(別のLOADまたはSQL)から受信したデータに対して実行する追加の手順を示しています。最初の一見私はLOADステートメントのロジックの多くをSQLステートメントに転送することができますが、大きな損害は生じません。私は完全にあなたのシナリオで追加のLOADコマンド(SQLコマンドの上に)の使用を捨てるでしょう。

0

ブルーノと同意します。 可能であればGroup ByステートメントをSQL selectに移動してください。 (はるかに高速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`; 
関連する問題