Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mySQL中的两个数字相乘_Mysql - Fatal编程技术网

mySQL中的两个数字相乘

mySQL中的两个数字相乘,mysql,Mysql,我使用的是phpMyAdmin,我有两个表: 销售税 |--------|----------|------------| | STX_Id | STX_Name | STX_Amount | |--------|----------|------------| | 1 | Tax 1 | 5.00 | | 2 | Tax 2 | 13.50 | |--------|----------|------------| |--------|--

我使用的是phpMyAdmin,我有两个表:

销售税

|--------|----------|------------|
| STX_Id | STX_Name | STX_Amount |
|--------|----------|------------|
|      1 |    Tax 1 |       5.00 |
|      2 |    Tax 2 |      13.50 |
|--------|----------|------------|
|--------|---------------|------------|------------|--------------|----------|---------------------|
| BIL_Id | BIL_BookingId | BIL_Date   | BIL_Status | BIL_Quantity | BIL_Rate | BIL_ApplicableTaxes |
|--------|---------------|------------|------------|--------------|----------|---------------------|
|      1 |             2 | 2018-03-06 | notcharged |           2  |   100.00 |                   1 |
|      2 |             2 | 2018-03-07 | notcharged |           3  |   105.00 |                 1,2 |
|--------|---------------|------------|------------|--------------|----------|---------------------|
\uuuuuuuuuuuuuuuuuu可计费数据

|--------|----------|------------|
| STX_Id | STX_Name | STX_Amount |
|--------|----------|------------|
|      1 |    Tax 1 |       5.00 |
|      2 |    Tax 2 |      13.50 |
|--------|----------|------------|
|--------|---------------|------------|------------|--------------|----------|---------------------|
| BIL_Id | BIL_BookingId | BIL_Date   | BIL_Status | BIL_Quantity | BIL_Rate | BIL_ApplicableTaxes |
|--------|---------------|------------|------------|--------------|----------|---------------------|
|      1 |             2 | 2018-03-06 | notcharged |           2  |   100.00 |                   1 |
|      2 |             2 | 2018-03-07 | notcharged |           3  |   105.00 |                 1,2 |
|--------|---------------|------------|------------|--------------|----------|---------------------|

我想每天在
\uuuuuu BillableDatas
中列出一个可计费物品的列表,具体取决于物品的状态(已计费与未计费)

比如说:

|------------|-----------------|--------------------|------------------|--------------------|
|    Date    | BIL_Sum_Charged | BIL_Sum_Notcharged | Taxes_ForCharged | TaxesForNotCharged |
|------------|-----------------|--------------------|------------------|--------------------|
| 2018-03-06 |            0.00 |             200.00 |             0.00 |              10.00 |
| 2018-03-07 |            0.00 |             315.00 |             0.00 |             58.275 |
|------------|-----------------|--------------------|------------------|--------------------|

我实际拥有的:

SELECT b.BIL_Date,
SUM(case when b.BIL_Status = "charged" then b.BIL_Rate else 0 end
 / (1 + LENGTH(b.BIL_ApplicableTaxes)
        - LENGTH( REPLACE ( b.BIL_ApplicableTaxes, ",", "") ) ))
   as BIL_Sum_Charged, 
 SUM(case when b.BIL_Status = "notcharged" then b.BIL_Rate else 0 end
 / (1 + LENGTH(b.BIL_ApplicableTaxes)
        - LENGTH( REPLACE ( b.BIL_ApplicableTaxes, ",", "") )))
      as BIL_Sum_Notcharged,
  SUM(case when b.BIL_status = "charged" then s.STX_Amount else 0 end) 
      as STX_TAX_Charged,
  SUM(case when b.BIL_status = "notcharged" then s.STX_Amount else 0 end) 
     as STX_TAX_NotCharged
 FROM ___BillableDatas b
 INNER JOIN ___SalesTaxes s
 ON FIND_IN_SET(s.STX_id, b.BIL_ApplicableTaxes) > 0
 WHERE b.BIL_HotelId='cus_CNHLMiMOzP5cuM' 
 AND b.BIL_BookingId='2' 
 GROUP BY b.BIL_Date 
 ORDER BY b.BIL_Date ASC

此查询的问题是我没有正确的
BIL\u sum\u Charged
BIL\u sum\u NotCharged
的总和,因为总和没有乘以
BIL\u Quantity

例如,2018-03-07年,我的
105
315
BIL\u Sum\u Notcharged
。最后的税额也是一样的

请问我的错误在哪里

请参阅SQL FIDLE:


非常感谢您的帮助。

经过讨论,这似乎是您所需要的。希望这有帮助

SELECT b.BIL_Date,
SUM(case when b.BIL_Status = "charged" then b.BIL_Rate else 0 end
 / (1 + LENGTH(b.BIL_ApplicableTaxes)
        - LENGTH( REPLACE ( b.BIL_ApplicableTaxes, ",", "") ) )) * b.BIL_Quantity
   as BIL_Sum_Charged, 
 SUM(case when b.BIL_Status = "notcharged" then b.BIL_Rate else 0 end
 / (1 + LENGTH(b.BIL_ApplicableTaxes)
        - LENGTH( REPLACE ( b.BIL_ApplicableTaxes, ",", "") ))) * b.BIL_Quantity
      as BIL_Sum_Notcharged,
  SUM(case when b.BIL_status = "charged" then s.STX_Amount else 0 end) * (SUM(case when b.BIL_Status = "charged" then b.BIL_Rate else 0 end
 / (1 + LENGTH(b.BIL_ApplicableTaxes)
        - LENGTH( REPLACE ( b.BIL_ApplicableTaxes, ",", "") ) )) * b.BIL_Quantity) / 100
      as STX_TAX_Charged,
  SUM(case when b.BIL_status = "notcharged" then s.STX_Amount else 0 end) * ( SUM(case when b.BIL_Status = "notcharged" then b.BIL_Rate else 0 end
 / (1 + LENGTH(b.BIL_ApplicableTaxes)
        - LENGTH( REPLACE ( b.BIL_ApplicableTaxes, ",", "") ))) * b.BIL_Quantity) / 100
     as STX_TAX_NotCharged
 FROM ___BillableDatas b
 INNER JOIN ___SalesTaxes s
 ON FIND_IN_SET(s.STX_id, b.BIL_ApplicableTaxes) > 0
 WHERE b.BIL_HotelId='cus_CNHLMiMOzP5cuM' 
 AND b.BIL_BookingId='2' 
 GROUP BY b.BIL_Date 
 ORDER BY b.BIL_Date ASC;

根据讨论进行编辑

你为什么认为你应该有
315
而不是
105
?因为,从我的数据来看,我应该有
2
项目成本
105
,而我的
bilu数量在
3
相等。3*105=315. 报告应将项目成本与
BIL\u quantity
中输入的数量相加/相乘(如果b.BIL\u Status=“notcharged”则b.BIL\u Rate else 0 end/(1+长度(b.BIL\u applicatabletaxes)-长度(替换为b.BIL\u applicatabletaxes,,,))
在该日期的两行中添加两次,然后除以2。
*3
在哪里?这是我不知道怎么做的。除了乘法运算之外,我的实际查询看起来很有效。谢谢你的帮助。税额是错误的。对于2018-03-07,我应该是
58.27
,而不是
55.5
,因为这两种税的总和是
18.5
18.5%的315=58.27
13.5+5=18.5*3=55.5您是如何得到58.27的?很抱歉,缺少信息。我的税率是
5%
13.5%
。这是百分比,不是总和。因此
5%+13.5%=18.5%
18.5%的315=58.27
。如果不清楚,请告诉我。谢谢,现在已经清楚了。这不是您在查询中所做的。让我来解决它。更新了答案。