SQL查询
SELECT
dbo.TotalPackagedQty(t1.int_PackingListDetailId),
float_Quantity,
int_PackingListDetailId
CASE
WHEN dbo.TotalPackagedQty(t1.int_PackingListDetailId) = 0 THEN 1
WHEN dbo.TotalPackagedQty(t1.int_PackingListDetailId) < float_Quantity THEN 2
WHEN dbo.TotalPackagedQty(t1.int_PackingListDetailId) = float_Quantity THEN 3
END
FROM tblSdPackingListDetail t1
WHERE int_PackingId = '10901032014121313496PM0'
这是一个SQL查询。
我正在使用名为dbo.TotalPackagedQty(t1.int_PackingListDetailId)的函数。
我在查询中使用此功能4次。输出正确,但我想只调用此函数一次以提高查询速度。
请在查询而非存储过程或其他事项中建议我更好的选择。
答案 0 :(得分:7)
试试这个 -
SELECT
value,
float_Quantity,
int_PackingListDetailId =
CASE
WHEN value = 0 THEN 1
WHEN value < float_Quantity THEN 2
WHEN value = float_Quantity THEN 3
END
FROM dbo.tblSdPackingListDetail t1
CROSS APPLY (
SELECT value = dbo.TotalPackagedQty(t1.int_PackingListDetailId)
) tt
WHERE int_PackingId = '10901032014121313496PM0'
答案 1 :(得分:-1)
声明变量并尝试
DECLARE @totalPackagedQty int; set @totalPackagedQty=dbo.TotalPackagedQty(t1.int_PackingListDetailId);然后在所有地方使用
totalPackagedQty
而不是函数调用。