以下のクエリの結果を取得しようとしています。
select distinct
REQ_ID
, ID
, MAX(STEP) as step
, SUBSTRING(p1.NAME,9, len(p1.NAME)) as _index_
, p2.value as location
from HISTORY h
LEFT JOIN Parameter p1
on p1.WP_ID=h.ID
AND ( ( p1.NAME like 'name_'
AND p1.VALUE like h.ID COLLATE DATABASE_DEFAULT )
OR ( p1.NAME like 'name__'
AND p1.VALUE like h.ID COLLATE DATABASE_DEFAULT) )
LEFT JOIN Parameter p2
on p2.WP_ID=h.ID
AND p2.PA_NAME = 'Location' + (SUBSTRING(p1.NAME,9, len(p1.NAME)) )
WHERE h.ROLE = 'rock'
GROUP BY REQ_ID, ID, step, p1.name, p2.value
問題は、クエリが複数の結果(私の場合は6つ)をMAX(STEP)
返し、値が最大値を返さないことです。0,1,3,0,1,2のような値を見ることができます。max(step)
?で結果のみを取得します step
フィールドはvarchar(1)