私は次のSQLテーブルを持っています
oitems table
+---------+-----------+----------+
| orderid | catalogid | numitems |
+---------+-----------+----------+
| O737 | 353 | 1 |
| O738 | 364 | 4 |
| O739 | 353 | 3 |
| O740 | 364 | 6 |
| O741 | 882 | 2 |
| O742 | 224 | 5 |
| O743 | 224 | 2 |
+---------+-----------+----------+
Orders table
+-----------------+------------+------------+
| orderid | ocardtype | odate |
+-----------------+------------+------------+
| O737 | Paypal | | 'OK
| O738 | MasterCard | 01.02.2012 | 'OK
| O739 | MasterCard | 02.02.2012 | 'OK
| O740 | Visa | 03.02.2012 | 'OK
| O741 | Sofort | | 'OK
| O742 | | | 'ignore because ocardtype is empty
| O743 | MasterCard | | 'ignore because Mastercard no odate
+-----------------+------------+------------+
と呼ばれる再利用可能なデータテーブルresult
+-----------+----------+--------------+
| catalogid | numitems | ignoreditems |
+-----------+----------+--------------+
| 353 | 4 | 0 |
| 364 | 10 | 0 |
| 882 | 2 | 0 |
| 224 | 0 | 7 |
+-----------+----------+--------------+
アイデアは、次の条件でテーブルcatalogid
内のデータに同じデピンが設定されている製品のnumitems列を合計することです。oitems
ocardtype
空の場合は、を無視して合計numitems
と見なし、無視された項目を 列に合計します0
ignoreditems
ocardtype
ある順序がMasterCard
またはVisa
でodate
空の場合は、を無視してそれnumitems
を考慮し 、無視された項目を列0
に合計しますignoreditems
ocardtype
isPaypal
またはSofort
、の場合numitems
、これらのタイプは必要がないため、日付を確認せずに合計を実行します。odate
基本的に、結果のデータテーブルを一時的なデータテーブルに保存し、それをvb.netデータテーブルにロードしたいと思います
私はSQLクエリでこれを行う方法を理解するのに苦労しています!私はこれをvb.netのsqlコマンドとして必要とし、ループを使用してvb.netデータテーブルを使用してプログラムで実行でき、linqを使用して多くのチェックを行うことはオプションですが、サーバーからこれを取得する必要があります