A)创建函数并在我的查询中调用它之后,我注意到它在'Reports'列中返回'Qualified'和'NULL'结果。这显然不是很好的原因。简化背后的逻辑是什么推动了我的坚果。我如何添加一个子句 - 无法添加子句?我是否必须通过一些转换来改变函数,将结果插入表中,然后执行一个函数,也许是另一个变量?我错过了什么?标量函数vs存储过程与INSERT INTO新表
B)我的整个观点是,为什么我在使用SELECT语句中的函数查询[dbo]。[FactInternetSales]表时为什么不添加WHERE子句?是否应该在函数本身中进行这种更改,以便能够使用WHERE子句返回结果?如果是这样,我该怎么做呢?
ALTER FUNCTION [dbo].[ExTaxQual]
(@Val1 money
,@Val2 money)
RETURNS char(4) AS
BEGIN
DECLARE @result char(4)
IF (@Val1 + @Val2) > 1000
SET @result = 'Qualified'
ELSE
SET @result = NULL
RETURN
@result
END
而且我的查询:
SELECT
[ExtendedAmount]
,[TaxAmt]
,[dbo].[ExTaxQual]([ExtendedAmount]
,[TaxAmt]) AS 'Reports'
FROM
[dbo].[FactInternetSales]
结果..
选择 [ExtendedAmount] ,[TaxAmt] ,[DBO] [ExTaxQual]([ExtendedAmount。 ,[TaxAmt])AS'Reports'FROM [dbo]。[FactInternetSales] ------------------------ */
(60398行(S)的影响)
这是几乎没有一致不够。
B)也许如果你想利用报告只对合格的记录,然后使用下面的例子是一个有点清晰
SELECT [ExtendedAmount]
,[TaxAmt]
,[dbo].[ExTaxQual](
[ExtendedAmount]
,[TaxAmt])
AS Report
FROM [dbo].[FactInternetSales]
WHERE [ExtendedAmount] + [TaxAmt] = 'Qualified'
------------------------------VS
SELECT [ExtendedAmount],
[TaxAmt],
'Qualified' AS Reports
FROM [dbo].[FactInternetSales]
WHERE [ExtendedAmount] + [TaxAmt] > 1000
您的预期产出是多少? – StackUser 2015-04-01 10:41:34
虽然你在这里:你的意见是什么?哪些参数值导致“NULL”值? – 2015-04-01 10:46:14
@papatoob参数是添加的两个数量等于“结果”> 1000。我不希望函数显示param为NULL的位置 – 2015-04-01 11:04:41