我有以下 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 |
+-----------+----------+--------------+
想法是将具有相同依赖关系的产品的 numitems 列与表catalogid
中的数据相加,并oitems
具有以下条件
- 如果
ocardtype
为空,则忽略numitems
并将其视为0
总和并将忽略的项目加到ignoreditems
列中 - 如果
ocardtype
某个订单是MasterCard
orVisa
并且odate
是空的,则忽略numitems
并将其视为0
并将忽略的项目加到ignoreditems
列中 - 如果
ocardtype
是Paypal
orSofort
,那么只做numitems
总和而不检查日期,因为这些类型不需要odate
基本上我想将结果数据表保存到临时数据表并将其加载到 vb.net 数据表
我很难弄清楚如何在 sql 查询中执行此操作!我需要这个作为 vb.net 的 sql 命令,能够使用循环使用 vb.net 数据表以编程方式执行它,并且可以选择使用 linq 进行大量检查,但我只需要从服务器获取它