求一统计函数,有需求和期待结果举例
应用需求:
日期        酒店名称    备注    价格
2012-01-28  商务酒店    全含    80
2012-01-29  商务酒店    全含    80
2012-01-30  商务酒店    全含    80
2012-01-31  新天地酒店  含早    110
期待结果:
28、29、30 商务酒店 全含 80 / 31 新天地酒店 含早 110
求一函数,输出以上结果,其中关联外键PartyID
目前写了个简单的类似函数
ALTER   Function   [dbo].[f_getPlanHotel](@ID   Int)     
  Returns   Nvarchar(400)     
  As     
  Begin     
          Declare   @S   Nvarchar(400)     
          Set   @S=''     
          Select   @S=@S + '/' + ' ' + DateName(day,date) + '、' + [Name] + ' ' + [desc] + ' ' + cast(CAST(Price AS int) as varchar(10)) + ' ' from   PartyPlanHotel Where   PartyID=@ID    
          Return   ltrim((Stuff(@S,1,1,'')))
  End     
测试的结果是:
28、象山商务 全含 80 / 29、象山商务 全含 80 / 30、象山商务 全含 80 / 31、阳朔新天地 含早 110 
求一实现期待结果的函数
------最佳解决方案-------------------- CREATE FUNCTION ff (@ID INT) 
RETURNS VARCHAR(400) 
AS  
BEGIN  
	DECLARE @S NVARCHAR(400); 
	WITH  cte AS 
	( 
		SELECT  [日期] = STUFF(( 
							  SELECT '、'+ DATENAME (dd , [日期]) FROM [tb] WHERE [酒店名称]= t.[酒店名称] AND [备注]= t.[备注]AND [价格]= t.[价格]  FOR XML PATH('') 
							 ) , 1 , 1 , '') , [酒店名称] , [备注] , CONVERT(VARCHAR(10) , [价格]) AS [价格] 
		FROM    [tb] AS t 
		-- Where PartyID=@ID  
		GROUP BY [酒店名称] , [备注] , [价格] 
	) 
	SELECT  @S = ISNULL(@S + ' / ' , '') + [日期] + ' ' + [酒店名称] + ' ' + [备注] + ' ' + [价格] 
	FROM    cte  
	RETURN @S 
END  
SELECT dbo.ff(1) ------其他解决方案-------------------- 这个可以按照 酒店名称 备注 价格 排序,然后遍历取数据分别赋值给3个变量 ,
当下一条和上一条不等 说明该+‘/’分隔了,一样 就把日期串起来。思路已有!
------其他解决方案-------------------- 引用: 应用需求: 
日期        酒店名称    备注    价格 
2012-01-28  商务酒店    全含    80 
2012-01-29  商务酒店    全含    80 
2012-01-30  商务酒店 &n