日期:2014-05-17  浏览次数:20378 次

急!TSql中合并内容问题,分组-过滤-合并
我插入数据库的时候把内容安一定规则分割成几条数据 并标识出是第几条
MOBILE_NO	SMS_CONTENT	INTO_TIME	MSGSUB	MSGSUM
13269379030 1.短信内容不能为空 2.发送手机不能为空 3.70字以内计费一条,超过70字按每67条来计算 4.给多个号码发送按','分割 5.发送内容 2013-08-23 15:28:57.730 1 3
13269379030 中不能包含敏感字 6.系统会自动过滤无效和重复手机号 1.短信内容不能为空 2.发送手机不能为空 3.70字以内计费一条,超过70字按 2013-08-23 15:28:57.730 2 3
13269379030 每67条来计算 4.给多个号码发送按','分割 5.发送内容中不能包含敏感字 6.系统会自动过滤无效和重复手机号 2013-08-23 15:28:57.730 3 3


 就想通过MSGSUB的顺序把手机号和时间相同的而且MSGSUM也相同的 SMS_CONTENT合并成一条数据
最好写成试图 ,合并后
MOBILE_NO	SMS_CONTENT	INTO_TIME
13269379030 1.短信内容不能为空 2.发送手机不能为空 3.70字以内计费一条,超过70字按每67条来计算 4.给多个号码发送按','分割 5.发送内容中不能包含敏感字 6.系统会自动过滤无效和重复手机号 1.短信内容不能为空 2.发送手机不能为空 3.70字以内计费一条,超过70字按每67条来计算 4.给多个号码发送按','分割 5.发送内容中不能包含敏感字 6.系统会自动过滤无效和重复手机号 2013-08-23 15:28:57.730

sql 数据库 数据 合并

------解决方案--------------------
CREATE TABLE T_Test
(MOBILE_NO VARCHAR(20),
SMS_CONTENT VARCHAR(4000),
INTO_TIME DATETIME,
MSGSUB INT,
MSGSUM INT)
INSERT INTO T_Test(MOBILE_NO,SMS_CONTENT,INTO_TIME,MSGSUB,MSGSUM)
VALUES('13269379030'
,'1.短信内容不能为空 2.发送手机不能为空 3.70字以内计费一条,超过70字按每67条来计算 4.给多个号码发送按,分割 5.发送内容'
,'2013-08-23 15:28:57.730', 1, 3)
,('13269379030','中不能包含敏感字 6.系统会自动过滤无效和重复手机号 1.短信内容不能为空 2.发送手机不能为空 3.70字以内计费一条,超过70字按','2013-08-23 15:28:57.730',2,3)
,('13269379030','每67条来计算 4.给多个号码发送按,分割 5.发送内容中不能包含敏感字 6.系统会自动过滤无效和重复手机号'
,'2013-08-23 15:28:57.730',3,3)
,('1234567890','test',GETDATE(),1,1)
,('1234567891','test1',GETDATE(),1,2)
,('1234567891','test1',GETDATE(),2,2)

--查询
select MOBILE_NO,
sms_content = (SELECT ''+sms_content FROM T_Test WHERE MOBILE_NO=a.MOBILE_NO ORDER BY msgsub FOR XML PATH('')),
MIN(into_time) as into_time
from T_Test a
GROUP BY MOBILE_NO
--结果
/*
MOBILE_NO sms_content into_time
1234567890 test 2013-08-23 16:35:09.757
1234567891 test1test1 2013-08-23 16:35:09.757