2010-09-29 50 views
0

调用UDF像这样:TVF UDF不返回相同的数据作为SELECT

SELECT 
     product_name, 
     SUM(quantity) AS SumQty, 
     SUM(face_value) AS SumFaceValue, 
     SUM(net_cost)AS SumNetCost, 
     SUM(face_value - net_cost) AS SumScripRebate, 
     organization_name 
FROM getSalesSummary(@GLSCOrgId, @BeginDate, @EndDate) getSalesSummary 
GROUP BY product_name, organization_name 
ORDER BY product_name 

收率:

"Chili's  1 25.00 22.75 2.25 Sample Organization 1 
    CVS/pharmacy 1 25.00 23.50 1.50 Sample Organization 1 
    Macy's  1 100.00 90.00 10.00 Sample Organization 1" 

使用UDF逻辑和测试结果与SELECT:

SELECT 
     product_name, 
     SUM(quantity) AS SumQty, 
     SUM(face_value) AS SumFaceValue, 
     SUM(net_cost) AS SumNetCost, 
     SUM(face_value - net_cost) AS SumScripRebate, 
     organization_name 
FROM @ReturnTable 
GROUP BY product_name, organization_name 
ORDER BY product_name 

收益率:

"Chili's  4 100.00 91.00 9.00 Sample Organization 1 
    CVS/pharmacy 1 25.00 23.50 1.50 Sample Organization 1 
    Macy's  1 100.00 90.00 10.00 Sample Organization 1" 

@ReturnTable是由UDF返回的表,并创建像这样:

INSERT INTO @ReturnTable(product_name, 
         unit_price, 
         quantity, 
         face_value, 
         net_cost, 
         organization_name) 
(select * from @TablePartial UNION select * from @TableClosed) 

与SELECT和变量是返回正确的数据,但在调用UDF没有得到与其他3个池莉测试记录。我正在使用相同的参数数据。我对UDF很陌生,我不确定它为什么会返回与SELECT不同的数据。任何建议和/或答案?

+0

U可以生成表格,数据和功能的脚本和在这里发布它可以给更多的想法 – Thakur 2010-09-29 14:24:13

回答

1

你可能需要UNION ALLUNION

望着两个结果集它仿佛4辣椒的行都是一样的加起来。

Chili's  1 25.00 22.75 2.25 Sample Organization 1 
Chili's  1 25.00 22.75 2.25 Sample Organization 1 
Chili's  1 25.00 22.75 2.25 Sample Organization 1 
Chili's  1 25.00 22.75 2.25 Sample Organization 1 
------------------------------------------------------------- 
Chili's  4 100.00 91.00 9.00 Sample Organization 1 

使用UNION将删除重复,留下一行。

+0

不会联盟所有创建重复?另外,为什么这很重要?无论它是如何创建的,选择表中的所有内容并返回表应该会得到相同的结果? – LobalOrning 2010-09-29 14:23:37

+0

'UNION ALL'不会创建重复项。它只是不会删除重复。不可能从这里推测为什么你会得到不同的结果。您需要为您的问题添加足够的细节,以便我们可以重现问题。 – 2010-09-29 14:25:42

+0

好吧,我会看看还有什么我可以发布,并尝试联盟所有 – LobalOrning 2010-09-29 14:28:40

0

我能想到的唯一的事情是它的UNION变化UNION ALLUNION将消除的DUP

运行这些查询看出差别

select 1 as a 
union 
select 1 
union 
select 1 


select 1 as a 
union all 
select 1 
union all 
select 1 
相关问题