我知道这很简单...
请告知我如何获得第 1、9、18 和 21 行的结果集(基于附图)?
谢谢,
布拉德
使用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
如果每一列的行确实不同,那么您可以使用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
由于表中存在冗余数据,您可以使用以下方法:-
创建一个临时表(与附加的图像表具有相同的架构)并执行此查询:-
Insert into [temptable]
Select [all column names] from [table]
union
Select [all column names] from [table]
之后,您可以从原始表中截断数据,然后从临时表插入原始表。