1

antsDescriptionCode2 つの結合テーブルのすべての列を表示しようとしていますが、データ型がの列の 1 つ (つまり ) から一意の値のみを取得しますnvarchar

誰でも助けてもらえますか?ありがとう。

私の現在のクエリでは、いくつかの条件で2つの結合テーブルのすべての列を表示できます:

select c.*, a.* 
from cats c
join ants a on c.ctypeid = a.atypeid
where 
     (c.CatsNo like 'cat4%'
   or c.CatsNo like 'cat7%'
   or c.CatsNo like 'cat8%')
   and a.antsflagged = 0 
   and a.antsDescriptionCode in ('type a', 'type b', 'type  c')!

現在の取得と予想される出力については、画像を参照してください

Microsoft SQL Server 2008 を使用しています。

4

2 に答える 2

1

Microsoft SQL Server を使用していると仮定すると、次のようなことができます。

select * from (
select 
    c.*, a.*,
    row_number() over (partition by a.antsDescriptionCode order by CatsNo) [row]
from cats c
join ants a on c.ctypeid = a.atypeid
where 
     (c.CatsNo like 'cat4%'
   or c.CatsNo like 'cat7%'
   or c.CatsNo like 'cat8%')
   and a.antsflagged = 0 
   and a.antsDescriptionCode in ('type a', 'type b', 'type  c')
) q where q.row=1

catsnoこれにより、すべての個別の の最初の行 ( 順) が得られますantsDescriptionCode

また、値の追加の列 (「行」と呼ばれる) も提供され1ます。それを取り除くには、最初*の列を実際の列のリストに置き換えます。

于 2012-08-15T05:34:10.793 に答える
0

両方のテーブルの複数の行で共有されている任意の行に参加しているTypeIDため、データをさらに定義する必要があります。多くの Ant 行のどれがその種類以外にその Cat に関連付けられているかを決定するものは何ですか? 特定のタイプの最大の AntsID のみを返したいですか? 関係をさらに定義すると、より簡単で堅牢なソリューションが作成されます。それが定義されていなければ、この質問に対する他の回答で十分です。

于 2012-08-15T05:39:00.697 に答える