0

すべてのデータが行ごとに格納されている単一のテーブルがあります。

key      name   field   value
11       sam    state   1
11       fred   state   1
21       sam    state   3
21       fred   state   1
11       sam    dist    1
11       fred   dist    1
21       sam    dist    1
21       fred   dist    1

の数を取得するためのクエリが必要です"name" having dist = 1 with state = 1

次の行の何か..フィールド='dist'および値=1であるテーブルからカウント(値)を選択し、キー、名前を入力します( フィールド='状態'および値=1であるテーブルからキー、名前を 選択します)

上記の例では、答えは「3」であると予想しています(キー= 21のsamは対象外です)。

4

3 に答える 3

0

結合を使用します:

select count(distinct key, name) from table t1
inner join table t2
  on t2.key = t1.key and t2.name = t1.name and t2.field = 'state' and t2.value = 1
where t1.field = 'dist' and t1.value = 1
于 2012-08-27T09:48:28.923 に答える
0

これを試して:

select count (value) 
from table a
where  field = 'dist' 
and value = 1 
and exists
(
  select 1 from table n where field = 'state' and value =1
  and a.key = b.key 
  and a.name = b.name
)
于 2012-08-27T09:37:55.233 に答える
0
select count(distinct yourtable.name)
from yourtable
inner join
(
    select key, name from yourtable
    where field='dist' and value = 1
) dist1
    on yourtable.key = dist1.key 
    and yourtable.name = dist1.name
where field='state' and value = 1
于 2012-08-27T09:38:11.263 に答える