2015-04-01 69 views
0

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 
+0

您的預期產出是多少? – StackUser 2015-04-01 10:41:34

+0

雖然你在這裏:你的意見是什麼?哪些參數值導致「NULL」值? – 2015-04-01 10:46:14

+0

@papatoob參數是添加的兩個數量等於「結果」> 1000。我不希望函數顯示param爲NULL的位置 – 2015-04-01 11:04:41

回答

1

SELECT [ExtendedAmount], 
     [TaxAmt], 
     'Qualified' AS Reports 
FROM [dbo].[FactInternetSales] 
WHERE [ExtendedAmount] + [TaxAmt] > 1000 

該查詢給出了合格和不合格記錄的報告。在這裏你根本不需要功能。

SELECT [ExtendedAmount], 
     [TaxAmt], 
     CASE 
     WHEN [ExtendedAmount] + [TaxAmt] > 1000 THEN 'Qualified' 
     ELSE 'Not Qualified' 
     END AS Reports 
FROM [dbo].[FactInternetSales] 
+0

這有幫助。它很有趣,因爲在我問這個問題之前,我確實運行了它幾次,並且它不斷返回沒有數據的列名。這可能是一個錯誤的查詢。 ThanQ男人:) – 2015-04-01 11:06:58

+0

歡迎.......請選擇答案,如果它適合你。 – StackUser 2015-04-01 11:08:34

+0

第一個是我需要查詢的功能。完美的作品。不幸的是我不能投票你的答案,因爲我還是新的。 – 2015-04-01 11:11:20