0

紛らわしいタイトルですみません。探している解決策を一言で要約する方法がわからないため、検索に苦労していました。

列 Indicator、ID、および Num を持つ単一のテーブル table_name があります。Indicator は 0 または 1 で、ID は 2 回まで存在できます。ID番号が2回存在する場合、インジケーターの1つは0で、もう1つは1であり、IDが1回存在する場合、そのインジケーターは0です。行のインジケーターが0でNumの場合、クエリは0を返すことができる必要がありますインジケータが 1 の場合、インジケータ 0 と一致する ID。

Indicator----ID-----Num

1-------------01----3000

0-------------01----4000

0-------------02----5000

0-------------03----100

1-------------04----400

0-------------04----200

クエリの結果

4000

0

0

0

200

0
4

3 に答える 3

0
select case when oneId.id is null the 0 else zero.num end case
from table1 zero 
left join table1 oneId
on zero.id = oneId.id
and 1 = oneId.indicator
where zero.indicator = 0
于 2013-06-19T15:14:03.730 に答える
0

これを試して:

SELECT IF(t1.indicator = 0 OR t2.Num IS NULL, 0, t2.Num)
FROM table_name as t1
LEFT JOIN table_name as t2 ON(
  t1.ID = t2.ID
  AND t1.indicator != t2.indicator
)

http://sqlfiddle.com/#!2/61623a/3

于 2013-06-19T15:14:15.450 に答える