declare @yyyymm varchar(max)
set @yyyymm=''
select @yyyymm=@yyyymm+yyyymm+',' from shop_settlements where brand_code='1001' and shop_code='1001'
if len(@yyyymm)>0 set @yyyymm=left(@yyyymm,len(@yyyymm)-1)
select @yyyymm以上代码能否在一个查询语句中完成?或字段:    tel(手机号)    stock(股票号)
记录:    13761495236    60001 
         13761495236    60002 
这里一个手机号对应多个股票的,现在怎样能查询出这样的结果?
         tel(手机号)    stock(股票号)
         13761495236    60001,60002 

解决方案 »

  1.   

    用casedeclare @yyyymm varchar(max) 
    set @yyyymm='' 
    select case when len(@yyyymm)>0 then left(@yyyymm,len(@yyyymm)-1) else
    @yyyymm+yyyymm+',' end @yyyymm
    from shop_settlements where brand_code='1001' and shop_code='1001' 
      

  2.   

    合并分拆表
    http://topic.csdn.net/u/20080612/22/c850499f-bce3-4877-82d5-af2357857872.html
      

  3.   

    第2题 用聚合函数Create  function [dbo].[test](@id varchar(30))
    returns varchar(200)
    as
    begin
    declare @str varchar(200)
    set @str=''
    select @str=rtrim(rtrim(@str+','+isnull(phonenumber,''))) 
    from table   
    return stuff(@str,1,1,'')
    end
      

  4.   


    CREATE FUNCTION get_stock(@tel varchar(16))
    return varchar(400)
    as
    begin
     declare @sql varchar(400)
     select @sql=isnull(@sql,'')+','+stock from  tb where tel=@tel
     return STUFF(@sql, 1, 1, '') 
    end select tel, get_stock(tel) as stock from tb group by tel 
      

  5.   


    case when ...........end