1

私はこれが簡単であることを知っています...

行1、9、18、および21の結果セットを取得する方法についてアドバイスしてください(添付の画像に基づく)??

ありがとう、

ブラッド

クエリと結果

4

3 に答える 3

2

行がすべての列で本当に異なる場合は、 を使用できますSELECT DISTINCT

SQL Server を使用row_number()しているため、それぞれに対して 1 つの行を返すために使用することもでき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 に答える
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 に答える
0

テーブルに冗長データが存在するため、次のアプローチを使用できます。

一時テーブルを作成し (添付のイメージ テーブルと同じスキーマを使用)、次のクエリを実行します。

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

その後、元のテーブルからデータを切り捨てて、temptable から元のテーブルに挿入できます。

于 2013-05-02T06:46:31.960 に答える