当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: evc下,cdatetimectrl控件该如何使用,最好能给出源码,谢谢先。 ......
 ·数据库字段    »显示摘要«
    摘要: char abc[100]; _variant_t dst; 字段值 dst=sprs->fields->getitem("a")->value; strcpy(abc, (char *) dst);//报错 如何将dst转换为abc ......


100分求Sql语句。up有分

表的结构及内容  
   
  T_Code         T_name  
  -----------------------------  
        1                 A  
        1                 B  
        1                 C  
        2                 A  
        2                 E  
        2                 F    
        3                 D  
        3                 E      
  ------------------------------  
   
  求Sql语句,能根据上表内容得到如下结果  
   
   
  T_Code         T_Name  
  ------------------------------  
        1                 ABC  
        2                 AEF  
        3                 DE  
  ------------------------------  
   
  up   有分  
 

NO.1   作者: g58521547

up

NO.2   作者: ghtghtmalone

列转行问题。  
  用游标是可以的。  
 

NO.3   作者: bigery

复杂查询把,第一列可以实现  
  然后第二列用sum函数,条件是表里面的值为distinct第一列!  
  具体语句可以实验的吗!呵呵

NO.4   作者: dulei115

不会,只能up

NO.5   作者: hmzgz81

up   有分?

NO.6   作者: bigery

select   distinct   t_code,sum(t_name)   from   tablename  
  where   t_code=(    
      select   distinct   t_code   from   tablename  
        )

NO.7   作者: FSU

bigery(bigery)不行吧,t_name   应该是整形才可以这样写呀!  
  建个临时表试试!

NO.8   作者: nyf1220

楼上的不行,  
  不会,哈哈,up  
 

NO.9   作者: haoguozhong

 
  思路:  
  select   T_Code     from     tablename   group   by   T_code   得到数据集:  
        1  
        2  
        3  
  select   T_Name   from   tablename   where   T_Code=:n   //   n为1、2、3  
  得到  
  A     A     D  
  B     E     E  
  C     F  
   
  最后字符串连接  
   
 

NO.10   作者: xbm2002

up  
 

NO.11   作者: bluespy

用两个循环算吧

NO.12   作者: fengyvn

我也来顶.

NO.13   作者: lizexia

group   by     tcode   就可以呀

NO.14   作者: lh983508

up

NO.15   作者: xx110

每次把数据库总体浏览,统计T_Code   里相同的数据的个数,再把对应的T_Name   道入变量StrA$中  
  再输出便可.我做过的.

NO.16   作者: Shiyl

不会!  
  up

NO.17   作者: songroy

我也顶

NO.18   作者: yurenjf

up

NO.19   作者: wxjjchen

以上这个结果可以做到  
  但是在查询分析器里是无法显示的  
  这个结果存在  
  但是只能打印输出  
  如果你需要显示在屏幕上  
  那只能用程序实现  
  步骤如下  
  你定义两个变量  
  DECLARE   @code   int   DECLARE   @name   varchar(500)  
  set   @name   =   ;  
  select   T_code,case   when   @code   =   T_code   then   @name   +   t_name  
                                        when   @code   <>   T_code   then   set   @code   =   T_code  
                              end  
  where   ...  
  group   by   ....  
   
  以上代码未调试过,你自己写个程序试试看吧,  
  其它方法也有,比如用do   until   object.eof     object.next   ...   loop   循环遍历,用case   when   then   end   语句比较赋值等等  
  以上语句用法可以查阅联机帮助  
  希望可以帮到你

NO.20   作者: dext

只要想到一般都可以实现!  
  但是单用SQL返回数据记也许会比较困难!  
  可以新建一个表,字符串连接  
  haoguozhong(郝国忠)   的方法就可以!

NO.21   作者: skykate

不懂

NO.22   作者: maoxianqiang

在数据库里写一个函数  
  Create       FUNCTION   GETName(@yourname   NVARCHAR(40))  
  RETURNS   NVARCHAR(800)  
  AS  
  BEGIN  
      DECLARE   @str   NVARCHAR(800)  
       
      SET   @str=  
   
      SELECT   @str   =   @str   +   T_name  
      FROM   表   WHERE   T_Code=@yourname  
   
      RETURN   @str  
  END  
   
  调用  
  Adoquery1.close;  
  Adoquery1.Text:=select   T_Code,getname(T_name)   from   表   group   by   T_Code   order   by   T_Code    
  Open;

NO.23   作者: zhourongbiao

同意:haoguozhong(郝国忠)

NO.24   作者: bgtwuqs

up!

NO.25   作者: topcn

ding

NO.26   作者: wzds2000

晕,顶。。。

NO.27   作者: xhongyang

顶。。。

NO.28   作者: llcc2003

select   distinct(T_name)   from   tablename    
  先取出不同的T_name,   然后  
  for   i:=0   to   query1.recordcount-1   do  
  begin  
          if   not   query1.eof   then  
          begin  
                  tname:=query1.fieldbyname("T_name").asstring;  
                  sql:=select   T_code   from   tablename   ++tname+;  
                  query2.sql.clear;  
                  query2.sql.add(sql);  
                  query2.sql.open;  
                  string1:=;  
                  for   j:=0   to   query2.recordcount-1   do  
                  begin  
                          string1:=string1+query2.fieldbyname("T_code").asstring;  
                          query2.movenext;  
                  end;  
                  sql2:=update   tablename   set   tcode=++string1++   where   t_name=++tanme+;    
                  query3.sql.clear;  
                  query3.sql.add(sql2);  
                  query3.execsql;  
          end;  
  end;          
 

NO.29   作者: haike_911

up

NO.30   作者: mengxiang5160

我只能给你一个建议:我建议你首先将T_code选出来放到数组中或是一个堆栈或是一个队列。  
  用两层循环,外层循环是数组中或是一个堆栈或是一个队列中的一个值,中间用adoquery控件  
  用select   语句选出在用一个循环,把T_name累加起来,程序到此结束。

NO.31   作者: mengxiang5160

也可以用  
  select   distinct   t_code,sum(t_name)   from   tablename  
  where   t_code=(select   distinct   t_code   from   tablename)  
   
 

NO.32   作者: qiuafa

up难题  
 

NO.33   作者: inforum

haoguozhong(郝国忠)   对的  
   
  就是游标,循环  
  或者借助临时表

NO.34   作者: wdsimon

高手的办法:  
  --1.创建一个合并的函数  
  create   function   fmerg(@id   char(1))  
  returns   varchar(8000)  
  as  
  begin  
  declare   @str   varchar(8000)  
  set   @str=  
  select   @str=@str+ltrim(rtrim(T_name))   from   table1   where   T_code=@id  
  --set   @str=right(@str,len(@str)-1)  
  return(@str)  
  End  
  go  
   
  --调用自定义函数得到结果  
  select   distinct   T_code,dbo.fmerg(T_code)   from   table1  
   
  详细见:  
  http://expert.csdn.net/Expert/topic/2299/2299635.xml?temp=.5711939  
  我的存储过程哪个缺陷已经去掉了


    摘要: 我属于那种话很少的人,跟女孩说话脸红的那种,我真不知道该怎么跟家里人相处哦,有点不好意思! ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE