
对游标的确可以实现,写程序也可以实现,因为他们的思想是一样的:判断一下名字是不是已经遍历过了,如果遍历过了,就累加一下,如果没有就从0加起。这样很好理解,但是写的很费时,其实一条sql语句就可以实现的,那就是子查询。
sql server怎么把多行数据合并成一行
group by 前面相同的字段,后面不同的,用max取。SELECT _id,prefix_desc Prefix:,UPPER(first_name) First Name:,UPPER(last_name) Last Name:,UPPER(eMail) Email:,LOWER(user_id) User ID:,REPLICATE(*,LEN(password)) Password:,(****+SUBSTRING(license_no,5,4)) Drivers Licese Number:,REPLACE(email_ind,Y,Accept) Email notification:,REPLACE(return_ind,Y,Accept) HERIZ E-RETURN,max(CASE WHEN tel_type= B THEN tel_number END + +REPLACE(pref_phone_ind,P,PREF)) Business Phone,max((+ _code + )+ CASE WHEN tel_type= M THEN tel_number END) Mobile Number,max(CASE WHEN tel_type= F THEN tel_number END) FaxFROM MEMBER m, license l, phone_fax pWHERE _id = _id AND _id = _idAND _id = Agroup by _id,prefix_desc Prefix:,UPPER(first_name) First Name:,UPPER(last_name) Last Name:,UPPER(email) Email:,LOWER(user_id) User ID:,REPLICATE(*,LEN(password)) Password:,(****+SUBSTRING(license_no,5,4)) Drivers Licese Number:,REPLACE(email_ind,Y,Accept) Email notification:,REPLACE(return_ind,Y,Accept) HERIZ E-RETURN
SQL查询结果累加
是Oracle数据库嘛?如果是oracle数据库可以这样:selectnum,name,sum(qty)over(Partitionbynameorderbynum)fromtorderbynum;测试:sys@REPO>witht(num,name,qty)as2(3select001,aa,1fromdual4unionallselect002,bb,2fromdual5unionallselect003,aa,2fromdual6unionallselect004,cc,3fromdual7unionallselect005,aa,2fromdual8)9selectnum,name,sum(qty)over(partitionbynameorderbynum)10fromt11orderbynum;NUMNAMESUM(QTY)OVER(PARTITIONBYNAMEORDERBYNUM)------------------------------------------------------------------------------------------------------------001aa1002bb2003aa3004cc3005aa5
如何用sql 语句将两个数据表相同字段合并成另外一个表


select a,b,c from tb1union (all)
发表评论