1

我知道这很简单...

请告知我如何获得第 1、9、18 和 21 行的结果集(基于附图)?

谢谢,

布拉德

查询和结果

4

3 回答 3

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
于 2013-05-01T22:17:41.190 回答
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
于 2013-05-01T22:23:48.527 回答
0

由于表中存在冗余数据,您可以使用以下方法:-

创建一个临时表(与附加的图像表具有相同的架构)并执行此查询:-

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

之后,您可以从原始表中截断数据,然后从临时表插入原始表。

于 2013-05-02T06:46:31.960 回答