我有两张桌子:
___ 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
感谢。