2013-12-20 125 views
0

我有兩個表1就好了;選擇價格取決於其他表

成本

ID taxwork taxworkbuissnes taxmaterials hourrate extrahourrate drivingcost

結算

ID小時材料extrahours buissnes

什麼我想要做的就是調用的總成本票據

如果buissnes = 1,這意味着它是一個buissnes結算,並且它對於小時費率可以享受折扣。

如果extrahours = 0就意味着我需要使用hourrate如果是1,我需要使用extrahourrate

是否有可能做一些if語句,這樣我就可以得到正確的totalhourcost,右稅。

編輯:加入小提琴

http://www.sqlfiddle.com/#!2/dd8d9/1

+1

是啊這是寶ssible。你有什麼疑問?你也可以給我們示例數據? – PeterRing

+0

不,我不知道如何做,如果我嘗試如果和案件,但不能得到它的工作 –

+0

嘗試在http://www.sqlfiddle.com/設置您的表和示例數據,並顯示您迄今爲止嘗試過的。 –

回答

1

嘗試使用此方法計算總的小時成本:你所問的

SELECT B.id, 
Hours 
* (CASE WHEN B.extrahours= 1 then C.extrahourrate else C.hourrate END) 
* (1 + CASE WHEN buissnes=1 then C.taxworkbuissnes/100 else C.taxwork/100 END) 
AS TotalHourCost 
FROM bill B JOIN cost C ON B.costid = C.id 
+0

*()*()是什麼?完美的作品! –

+0

「*」只是乘法運算符(乘以小時數* HourCost)。括號只是將小時費率的計算分離爲單個值,然後將適用的稅率計算爲單個值。 –

0

不是100%清楚,但希望這可以讓你開始

SELECT LaborCost,drivingCost,materials, 
     Taxes,TaxMaterials,taxes+taxMaterials as TotalTaxes, 
     laborCost+drivingCost+materials+Taxes+TaxMaterials as TotalCost 
FROM 
(
SELECT 
    CASE extraHours 
     WHEN 1 THEN (hours*extrahourRate) 
     ELSE (hours*hourRate) END as LaborCost, 
     drivingCost, 
     materials, 
     CASE Buissnes 
     WHEN 1 THEN TaxWorkBuissnes ELSE Taxwork END as Taxes, 
     TaxMaterials   

FROM bill 
JOIN cost ON bill.costid = cost.id 
) xx 
+0

好吧什麼是不清楚我會編輯它,使其更容易理解。稅額是不一樣的,你的答案稅總額= 34這可以留下,因爲總數將是14%的勞動力成本和20%的材料,所以總共34可以做很多答案,儘管 –