SQL-DBでは、4つの制限が別々の行として格納されています。
リミットを列として4つのリミットで1つの行に戻したいとします。
データは、次のようになります。複数の行を単一の行として返します
TABLE A
lsequence operator1 value1 operator2 value2
1 < 10.5 {NULL} {NULL}
2 >= 11.5 <= 12.5
3 >= 10.5 <= 13.5
4 > 13.5 {NULL} {NULL}
TABLE B
lsequence limittypeid
1 LowerFail
2 Pass
3 Warning
4 UpperFail
は、戻り値募集: 'limittypeid' に関する事例関数塩基と
LowerFail Pass Warning UpperFail
< 10.5 >= 11.5 || <= 12.5 >= 10.5 || <= 13.5 > 13.5
を私は4つのcolums ...しかし、まだ4行を取得。 。
現在の戻り値
COLUMN1 COLUMN2 COLUMN3 COLUMN4
< 10.5 ||
>= 11.5 || <= 12.5
>= 10.5 || <= 13.5
> 13.5 ||
使用されるコード:
SELECT
CASE
WHEN a.limittypeid = 'LowerFail'
THEN concat (b.operator1 , ' ' , b.value1 , ' || ' , b.operator2, ' ' , b.value2)
END,
CASE
WHEN a.limittypeid = 'Pass'
THEN concat (b.operator1 , ' ' , b.value1 , ' || ' , b.operator2, ' ' , b.value2)
END,
CASE
WHEN a.limittypeid = 'Warning'
THEN concat (b.operator1 , ' ' , b.value1 , ' || ' , b.operator2, ' ' , b.value2)
END,
CASE
WHEN a.limittypeid = 'UpperFail'
THEN concat (b.operator1 , ' ' , b.value1 , ' || ' , b.operator2 , ' ' , b.value2)
END
FROM
b
INNER JOIN b.lsequence = a.lsequence
WHERE ......conditions........
私はそれが可能である必要があります知っています。
ネストされたクエリを使用する – ammcom