У меня есть следующие таблицы 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
+-----------------+------------+------------+
reusltant datatable называется result
+-----------+----------+--------------+
| catalogid | numitems | ignoreditems |
+-----------+----------+--------------+
| 353 | 4 | 0 |
| 364 | 10 | 0 |
| 882 | 2 | 0 |
| 224 | 0 | 7 |
+-----------+----------+--------------+
идея состоит в том, чтобы суммировать столбец numitems для продуктов, которые имеют тот же самый catalogid
, отображающий данные в таблице oitems
со следующими условиями
- Если
ocardtype
пуст, то игнорируйтеnumitems
и считайте его как0
в сумме и сумме игнорируемых элементов наignoreditems
Столбец - если
ocardtype
для некоторого порядкаMasterCard
илиVisa
иodate
пуст, тогда игнорируйтеnumitems
и рассмотрите его как0
и суммировать игнорируемые элементы в столбцеignoreditems
- если
ocardtype
естьPaypal
илиSofort
, просто выполнитеnumitems
сумма не проверяя дату, потому что для этих типов не требуетсяodate
В основном я хочу сохранить результат, относящийся к временному datatable, и загрузить его в vb.net datatable
Мне сложно определить, как это сделать в SQL-запросе! Мне нужно это как команда sql для vb.net, смог сделать это программно, используя datatables vb.net, используя циклы и много проверок использование linq - это опция, но мне просто нужно получить это с сервера