嘿所以我有一个填充gridview的存储过程
在我的存储过程中,我有两列,例如
Total_Price DataType Money
和
Discount DateType decimal(18, 0)
我希望显示名为Actual Price
的派生列
Total_Price - Discount
最好在存储过程中创建此列,还是在gridview中按负载计算?
此刻是我的存储过程
SELECT f.supplier_name,d.product_ID_key, d.product_name AS productName, d.packsize, d.tradePrice, d.IPU_code, d.EAN_code, c.discount, e.stock_indicator
FROM aw_customer AS a INNER JOIN
aw_cust_contract AS b ON a.cust_ID_key = b.cust_ID_key INNER JOIN
aw_contract_line AS c ON b.contract_ID_key = c.contract_ID_key INNER JOIN
aw_product AS d ON c.product_ID_key = d.product_ID_key INNER JOIN
aw_stock AS e ON d.product_ID_key = e.product_ID_key INNER JOIN
aw_supplier AS f ON d.supplier_ID_key = f.supplier_ID_key
WHERE (a.cust_ID_key = @customerId)
ORDER BY d.product_name
答案 0 :(得分:2)
我会在存储过程级别计算这一点,因此对此存储过程的任何调用都将返回相同的结果(如果他们调用相同的存储过程,您将来不必对其他网格视图等进行数学运算)
在这种情况下,我经常创建一个SQL View
,以便在视图中完成计算,然后多个存储过程可以调用此视图并显示如下数据:
SELECT Total_Price
,Discount
,Actual_Price
FROM [v_TableA]
http://msdn.microsoft.com/en-us/library/aa214068%28v=sql.80%29.aspx
有关索引视图的详细信息,请参阅此文章,这也将提高性能:
答案 1 :(得分:0)
任何在数据库级别(在SP中)执行此操作的方式都将显着提高数据计算的性能,但另一方面,添加新列会因数据量增加而增加网络负载。
因此,请确定对您的应用程序更重要的是什么。