2012-02-05 8 views
0

に参加表(新しいユーザーは、まだ画像を投稿することはできません)です。は、SQLにExcelの配列数式から行くのヘルプが必要です。ここの文

screenshot

私は常にExcelを使用しましたが、私はよより大きなデータセットのためにSQLに切り替えることができます。

=SUM((A2:A8=E2)*(B2:B8)) 

セルG2のためのExcelで141の値を与える:ExcelのセルのG2を移入するには、私はこのようなものを使用しているだろう。

私はこれをSQLで動作させる方法を理解しましたが、なぜこれが機能するのか正確には分かりません。 SQLで使用したのは次のとおりです。

SET Table2.total_units_purchased = Table1.some_number 
FROM Table2 INNER JOIN 
(
    SELECT Table1.item 
    , SUM(Table1.units_purchased) AS some_number 
    FROM Table1 
    GROUP BY Table1.item 
) Table1 
ON Table2.item = Table1.item 

some_numberより前に "AS"が必要ですか?これは「AS」を省略しても何らかの理由で機能します。

ここに何か不足していますか?コードの最後の行にあるテーブルの順序は関係しますか?

ありがとうございました。

+0

この場合、ASはエイリアスであり、適切な形式ですが、必須ではありません。 ON句の順序は関係ありません。 – xQbert

+0

元々はクエリの結果の列にラベルを付けるために使用していたので、私は「AS」についてちょっと混乱しました。私はそれがこのような値を割り当てるのに使用できるのか分からなかった。 – eek142

+1

あなたのお問い合わせは大丈夫です。まず、購入したユニット(アウトプットを見るために内部クエリを実行する)を集計し、これを派生テーブル(エイリアス "Table1")として扱い、更新に参加します。 – ErikE

答えて

1

エイリアスとして 'AS'キーワードを使用することはオプションです。そのため、 'AS'を省略してもクエリは引き続き機能します。

第2に、この場合、最後のコード行の表の順序は関係ありません。あなたのコードがON Table1.item = Table2.itemだった場合、クエリは同じように動作します。左または右の外部結合を使用している場合は、テーブルの順序が重要であることに注意してください。

SQLコードでは、「アイテム」とそのアイテムの「購入単位の合計」を選択し、これらのデータを別のテーブルに入れて、再度Table1に名前を変更します。

次に、項目フィールドが同じ値を持つ2つのテーブル、Table2と新しいTable1を結合します。

最後に、「購入した単位の合計」フィールドを選択し、それをTable2のtotal_units_purchasedフィールドに割り当てます。

次のようにSQLクエリーを記述することができます。これは、Excel関数でも同じことを行います。

select sum(table1.units_purchased) 
into table2.total_units_purchased 
from table1, table2 
where Table2.item = Table1.item 
+0

これを実行しようとすると、 "キーワード 'の近くに"誤った構文があります "というエラーが表示されます。これは私がやっていたことよりはるかに単純な解決策のようです。どのソリューションが現在どのように動作しているかを100%確信しているわけではありません... SQL言語についての頭を抱えている必要があります。 – eek142

+0

上記のクエリはエラーなく正常に動作するはずです。どのデータベースを参照していますか? Oracle、MySQL、..? –

+0

SQL Server 2008 – eek142

関連する問題