如何根据不同的条件从不同的总和

时间:2016-04-22 19:42:20

标签: mysql vb.net

我有两个表计划和Plandetails

我想要做的是根据

选择Plandetails的价格

PlanNo,当前日期,FileNo from Plans

我想出了类似的东西,但它似乎无法正常工作

请注意,plandetails中还有一个列日期,也可能有当前日期。

例如

http://imgur.com/fjS0EVy.jpg

换句话说,我想根据表格计划中的当前日期汇总所有计划的价格

让我们说planno 6和7都有今天相同的日期,我想从plandetails中总结出价格总共470

  

从clinic.plandetails中选择planno in(选择planno来自clinic.plans WHERE date = curdate()和fileno ='"& fileno.Text&"&#39 ;

提前感谢。

1 个答案:

答案 0 :(得分:0)

如果在Reult中制作了包含更多Field的Sample。如果您不想拥有,可以从SELECT中删除。

我Donr知道如何将VB中的String放入Query中。你必须改变它!!

SELECT p.PlanNo, CURDATE(), p.FileNo, SUM(pd.price)  
FROM clinic.plans p
LEFT JOIN clinic.plandetails pd ON pd. planno = p. planno
WHERE pd.`date` = curdate() 
AND p.fileno = 'fileno.Text';

我希望它有所帮助

我再次测试过。它看起来不错。见样本

<强>示例

MariaDB [(none)]> use clinic
Database changed
MariaDB [clinic]> select * from plans;
+--------+--------+------------+
| planno | fileno | date       |
+--------+--------+------------+
|      5 |      2 | 2016-04-22 |
|      6 |      2 | 2016-04-22 |
|      7 |      2 | 2016-04-22 |
+--------+--------+------------+
3 rows in set (0.00 sec)

MariaDB [clinic]> select * from plandetails;
+----+--------+--------+-------+
| id | planno | fileno | price |
+----+--------+--------+-------+
|  1 |      6 |      2 |    80 |
|  2 |      6 |      2 |    90 |
|  3 |      7 |      2 |   100 |
|  4 |      7 |      2 |   100 |
|  5 |      7 |      2 |   100 |
+----+--------+--------+-------+
5 rows in set (0.00 sec)

MariaDB [clinic]> SELECT GROUP_CONCAT(DISTINCT(p.PlanNo)  SEPARATOR  ', ') , CURDATE(), p.FileNo, SUM(pd.price)
    -> FROM clinic.plans p
    -> LEFT JOIN clinic.plandetails pd ON pd. planno = p. planno
    -> WHERE p.`date` = curdate()
    -> AND pd.fileno = '2';
+---------------------------------------------------+------------+--------+---------------+
| GROUP_CONCAT(DISTINCT(p.PlanNo)  SEPARATOR  ', ') | CURDATE()  | FileNo | SUM(pd.price) |
+---------------------------------------------------+------------+--------+---------------+
| 6, 7                                              | 2016-04-22 |      2 |           470 |
+---------------------------------------------------+------------+--------+---------------+
1 row in set (0.00 sec)

MariaDB [clinic]>