【发布时间】:2012-10-01 06:47:48
【问题描述】:
我有以下 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的reusltant数据表
+-----------+----------+--------------+
| catalogid | numitems | ignoreditems |
+-----------+----------+--------------+
| 353 | 4 | 0 |
| 364 | 10 | 0 |
| 882 | 2 | 0 |
| 224 | 0 | 7 |
+-----------+----------+--------------+
想法是对具有相同catalogid 的产品的numitems 列求和,具体取决于oitems 表中的数据,条件如下
- 如果
ocardtype为空,则忽略numitems并考虑它 作为0在 sum 和 sum 忽略的项目到ignoreditems列 - 如果某个订单的
ocardtype是MasterCard或Visa并且odate为空然后忽略numitems并将其视为0并将忽略的项目汇总到ignoreditems列 - 如果
ocardtype是Paypal或Sofort,那么只需执行numitems和 不检查日期,因为这些类型不需要odate
基本上我想将结果数据表保存到临时数据表并将其加载到 vb.net 数据表中
我很难弄清楚如何在 sql 查询中执行此操作!我需要这个作为 vb.net 的 sql 命令,能够使用循环和大量检查的 vb.net 数据表以编程方式完成它 使用 linq 是一种选择,但我只需要从服务器获取它
【问题讨论】: