使用MySQL从两个表中报告

时间:2018-03-23 01:48:02

标签: mysql

我有两张桌子:

___ BillableDatas

|--------|------------|---------|--------------|---------------------|------------|
| BIL_Id | BIL_Date   |BIL_Rate | BIL_Quantity | BIL_ApplicableTaxes | BIL_Status |
|--------|------------|---------|--------------|---------------------|------------|
|    232 | 2018-03-01 |     105 |            1 |                 8,9 |    charged |
|    233 | 2018-03-01 |      30 |            2 |                   9 |  cancelled |
|    234 | 2018-03-01 |      21 |            2 |                  10 |    charged |
|    239 | 2018-03-01 |     105 |            1 |                 8,9 |    charged |
|--------|------------|---------|--------------|---------------------|------------|

___ SalesTaxes

|--------|--------------|------------|
| STX_Id | STX_TaxeName | STX_Amount |
|--------|--------------|------------|
|      8 | Taxe de séj. |      5.000 |
|      9 |          TPS |      5.000 |
|     10 |          TVQ |     19.975 |
|--------|--------------|------------|

我会收到一份报告,其中包含所有税金和两个日期之间的税金。

这样的事情:

|--------------|------------|----------|
| STX_TaxeName | STX_Amount |    taxes |
|--------------|------------|----------|
| Taxe de séj. |      5.000 |    10.50 |
|          TPS |      5.000 |    10.50 |
|          TVQ |     19.975 |     8.38 |
|--------------|------------|----------|

如何:
我需要从___BillableDatas获取所有可结算的项目,如果状态不是cancelled,请将金额乘以BIL_Quantity。我需要在___SalesTaxes表中查看适用于此项目的销售税ID。我每件商品有时可能有多个税(9,10)。

我的尝试如下:

SELECT BIL_Id, BIL_Date, BIL_Rate, BIL_Quantity, BIL_ApplicableTaxes, BIL_Status, STX_Id, STX_TaxeName, STX_Amount
       , taxes 
       , BIL_Quantity*BIL_Rate/100 AS taxes
FROM  ___BillableDatas
INNER JOIN ___SalesTaxes
ON ___BillableDatas.BIL_ApplicableTaxes = ___SalesTaxes.STX_Id
WHERE BIL_Date BETWEEN '2018-03-01' AND '2018-03-31'
AND BIL_Status != 'cancelled'

如果需要,请参阅此SQLFiddle以帮助您:
http://sqlfiddle.com/#!9/6a3929

感谢。

0 个答案:

没有答案