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