我是SQL視圖的新手,所以要溫和!SQL視圖中的表達式
我有以下SQL視圖:
SELECT dbo.product.name AS [Product Name],
ROUND(CASE [vat] WHEN 1 THEN [packcost] * 1.2 ELSE [packcost] END, 2) AS [Pack Cost],
ROUND(CASE [vat] WHEN 1 THEN ([packcost] * 1.2)/[units] ELSE [packcost]/[units] END, 2) AS [Unit Cost],
dbo.purchase.unitsaleprice * dbo.product.units AS [ Pack Sale Price], dbo.purchase.unitsaleprice AS [Unit Sale Price],
dbo.product.units * (dbo.purchase.unitsaleprice - ROUND(CASE [vat] WHEN 1 THEN ([packcost] * 1.2)/[units] ELSE [packcost]/[units] END, 2)) AS [Pack Profit],
dbo.purchase.unitsaleprice - ROUND(CASE [vat] WHEN 1 THEN ([packcost] * 1.2)/[units] ELSE [packcost]/[units] END, 2) AS [Unit Profit]
FROM dbo.product INNER JOIN
dbo.purchase ON dbo.product.id = dbo.purchase.productID
但正如我重寫了很多這似乎效率不高。
例如我想限定[包費用]柱:
ROUND(CASE [vat] WHEN 1 THEN [packcost] * 1.2 ELSE [packcost] END, 2) AS [Pack Cost]
被elswhere代替重寫它的。
例如,所以我可以使用:
[Pack Cost]/[Units]
要定義的單位成本,而不是:
ROUND(CASE [vat] WHEN 1 THEN ([packcost] * 1.2)/[units] ELSE [packcost]/[units] END, 2) AS [Unit Cost]
不知道如果我越來越棒的右端雖然,抑或是適合做到這一點。
對不起,是麻木了 - 你可以給我一些更多的指針?我會創建一個返回[Pack Cost]的函數嗎? – Ben