xml地图|网站地图|网站标签 [设为首页] [加入收藏]
多行合一行,计算时间差
分类:数据库

datediff语法格式:datediff(day,开始时间,结束时间)

需求描述:根据某一个字段或几个字段去重来显示任一条数据,第一条或最后一条。

sql多行合并成一行

一、应用举例:

数据样式如下图:

sql server

select * from [dbo].[Kah_Order_Sum] where datediff(day,'2016-09-20',created_time)>1

图片 1

SELECT [activityId],
--STUFF(
(SELECT ',' + Cast(A.phone AS varchar)
FROM aaa A
WHERE A.activityId=B.activityId
FOR XML PATH(''))
--,1,1,'') AS phones
FROM aaa B
GROUP BY [activityId]

上面的代码,将查询 'created_time' > '2016-09-20'  的所有记录。

 

mysql

如果要查询'created_time' < '2016-09-20'  的所有记录,有两个方法:

尝试解决:

SELECT
activityId,
group_concat(DISTINCT phone ORDER BY phone DESC SEPARATOR ';') AS phones
FROM
aaa 
GROUP BY
activityId

1、把最后的>1,改成<0;

--count(*)方法(只把条数为1条的显示出来了,超过1条全部过滤了)
select * from t4 where 自编条码 in 
(select 自编条码 from t4 group by 自编条码 having count(id)=1)

2、把两个字顺序互调,变成 datediff(day,created_time,'2016-09-20')>0

以上方法,会把仅1条记录的显示,但是重复的并没有保留其中一条,也过滤掉了。

 

所以,我们需要变化一下,提供三种解决方法:

本文由澳门新葡亰手机版发布于数据库,转载请注明出处:多行合一行,计算时间差

上一篇:没有了 下一篇:没有了
猜你喜欢
热门排行
精彩图文