2013-05-01 82 views

回答

2

如果行是跨每一列真正独特的,那么你可以使用SELECT DISTINCT

由于您使用的SQL Server,你也可以使用row_number()返回一行每个ThreatId

select ThreatId, 
    ThreatTopClient, 
    ... 
from 
(
    select ThreatId, 
    ThreatTopClient, 
    ..., 
    row_number() over(partition by ThreatId order by ThreatMLSeq) rn 
    from xThreatCA 
    where ThreatMLSeq <> N'' 
    and ID <> 0 
) d 
where rn = 1 
order by ThreatMLSeq 
+1

这工作得很好......谢谢! – blub 2013-05-03 01:41:13

2

使用SELECT DISTINCT而不是SELECT

SELECT DISTINCT ThreatID, ThreatTopClient, 
    '#' + CONVERT(NVARCHAR(2), ThreatMLSeq) + ' -- ' + ThreatML AS CAMLPad, 
    ThreatMLSeq, ThreatML, ThratDetailClient, ThreatArea, 
    ThreatFinalInherentRisk, ThreatTier21, ThreatControls, AuditID 
FROM xThreatCA 
WHERE (ThreatMLSeq <> N'') AND (ID <>0) 
ORDER BY dbo.xThreatCA.ThreatMLSeq 
+0

谢谢你的回应...我感谢你的帮助! – blub 2013-05-03 01:40:03

0

由于存在在你的表中的冗余数据,你可以用下面的办法: -

创建临时表(用相同的架构作为影像附加表),并执行这个查询: -

Insert into [temptable] 
Select [all column names] from [table] 
union 
Select [all column names] from [table] 

afterw你可以截断原始表中的数据,然后从可修改表插入原始表。

+0

使用truncate命令的有趣想法... – blub 2013-05-03 01:40:47