MSSQL求助..一个去重复问题

lianzuo123 2018-11-14 07:59:31
select entryId, billNo,AddTime,consignorCname,cusDecStatus,updateTime , cusDecStatusName = (STUFF((select ',' + cusDecStatusName from cusDecStatusData where entryId = a.entryId for xml path('')),1,1,'')) from cusDecStatusData a where billNo LIKE 'EGLV0508%' group by consignorCname,entryId,billNo,AddTime,cusDecStatus,updateTime ORDER BY AddTime DESC

这个是现在的语句



上图是查询结果..

如何去除重复的EntryId的那条记录,只显示AddTime最晚的那条.即上图里上面那条
...全文
31 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
doloopcn 2018-11-15
  • 打赏
  • 举报
回复


select entryId, billNo,AddTime,consignorCname,cusDecStatus,updateTime ,
cusDecStatusName = (STUFF((
select ',' + cusDecStatusName
from cusDecStatusData
where entryId = a.entryId for xml path('')),1,1,''))
from
//使用最简单的MAX查询
//***************************************************************************************************//
(SELECT entryId, billNo,AddTime,consignorCname,cusDecStatus,MAX(updateTime) updateTime
where billNo LIKE 'EGLV0508%'
group by consignorCname,entryId,billNo,AddTime,cusDecStatus) a
//***************************************************************************************************//
group by consignorCname,entryId,billNo,AddTime,cusDecStatus,updateTime
ORDER BY AddTime DESC
吉普赛的歌 版主 2018-11-14
  • 打赏
  • 举报
回复
错了, 是:
PARTITION BY entryId ORDER BY addTime DESC
吉普赛的歌 版主 2018-11-14
  • 打赏
  • 举报
回复
SELECT *
FROM (
	SELECT 
		   ROW_NUMBER() OVER (PARTITION BY billNo ORDER BY addTime DESC) AS rid	
		   entryId,
		   billNo,
		   AddTime,
		   consignorCname,
		   cusDecStatus,
		   updateTime,
		   cusDecStatusName = (
			   STUFF(
				   (
					   SELECT ',' + cusDecStatusName
					   FROM   cusDecStatusData
					   WHERE  entryId = a.entryId FOR XML PATH('')
				   ),
				   1,
				   1,
				   ''
			   )
		   )
	FROM   cusDecStatusData a
	WHERE  billNo LIKE 'EGLV0508%'
	GROUP BY
		   consignorCname,
		   entryId,
		   billNo,
		   AddTime,
		   cusDecStatus,
		   updateTime
) AS t
WHERE rid=1
ORDER BY
       AddTime DESC
二月十六 版主 2018-11-14
  • 打赏
  • 举报
回复
SELECT
*
FROM
(
SELECT
entryId,
billNo,
AddTime,
consignorCname,
cusDecStatus,
updateTime,
cusDecStatusName = (STUFF(
(
SELECT
',' + cusDecStatusName
FROM
cusDecStatusData
WHERE
entryId = a.entryId
FOR XML PATH('')
), 1, 1, ''
)
),
ROW_NUMBER() OVER (PARTITION BY
EntryId
ORDER BY
AddTime DESC
) rn
FROM
cusDecStatusData a
WHERE
billNo LIKE 'EGLV0508%'
GROUP BY
consignorCname,
entryId,
billNo,
AddTime,
cusDecStatus,
updateTime
) t
WHERE
rn = 1
ORDER BY
AddTime DESC;

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧