SQL中把符合条件的记录里的值输出到一行里
CLEAR PROC [dbo].[SP_FHTZD_YSSL2] @DJLSH INT AS
--声明变量:@khhz默认为空值,@1默认为1,@2取FHTZDcsB表体djbth最大值(或者取表头里djbtzdh进行赋值)
declare @khhz varchar(255)='',@1 INT=1 ,@2 INT
--SELECT @2=MAX(DJBTH) FROM FHTZDcsB WHERE DJLSH=@DJLSH
select @2=DjBtZdh from FHTZDCSH WHERE DJLSH=@DJLSH
WHILE (@1<=@2)
BEGIN
IF EXISTS(SELECT 1 FROM FHTZDcsB WHERE DJLSH=@DJLSH AND DJBTH=@1)
BEGIN
SET @khhz=''
Select @khhz=@khhz+IsNull(S.ZYSPB,'')+';'
From FHTZDcsS S, FHTZDcsB B
where S.djlsh=@DJLSH
AND S.DJLSH=B.DjLsh
AND S.DJBTH=B.DJBTH
AND S.DJBTH=@1
--Group By S.DjBth ,ZYSPB
SELECT @khhz=SUBSTRING(@khhz,1,LEN(@khhz)- 1) --对@khhz进行处理(去除最后一个;字符)。
UPDATE FHTZDcsB SET FYSSLMX=@khhz WHERE DJLSH=@DJLSH AND DJBTH=@1
END
SET @1=@1+1
END
declare @text varchar(255)='',
@id varchar(255)=''
--对于满足zzzt = '在职'且BMMC = 'N'条件的每一行记录,它将YGXM(如果不为空)的值连接到@text变量后面并加上;,将YGH(如果不为空)的值连接到@id变量后面并加上,
select @text =@text+isnull(YGXM,'')+';',
@id = @id+isnull(YGH,'')+','
from UserH where zzzt='在职' and BMMC='N'
--Group By YGXM
print @text
print @id

相关推荐
kettle使用手册
详细介绍了Kettle组件的使用方法和注意事项,支持多种数据库.
SQL查询数据库中符合条件的记录的总数
1. select count(*) from table; //统计元组个数 2. select count(列名) from table; //统计一列中值的个数 3. select count(*) from table where 字段 = “”; //符合该条件的记录总数 4. sql_count = “select count(*) from article a where 1=1 “; //这条语句中a就代表article 这张表,后面可以写a.字段来代表该表的字段,where 1 = 1,就相当于提供了一个where。因为1=1永远成立。 就可以根据是否需要加条件,在
SQLServer中如何将一个字段的多个记录值合在一行显示
SQLServer中如何将一个字段的多个记录值合在一行显示
SQL 合并多行记录的相同字段值
有时候会遇到这种情况,数据库查询返回多行记录,且每行记录由另外符合条件的多条记录内容合并,遇到这种情况,我们可以选择下面两种方式
SQL获取刚插入的记录的自动增长列ID的值
假设表结构如下: CREATE TABLE TestTable ( id int identity, CreatedDate datetime ) SQL2005获得新增行的自动增长列的语句如下: insert into TestTable (CreatedDate) output inserted.id values (getdate()) SQL2000获得新增行的自动增长列的语句如下: insert into TestTable (CreatedDate) values (getdate()) select @@IDENTITY 在C



