列関数の引き数は、1 つの式から派生する一連の値の集合です。 式に列を含めることができますが、 スカラー全選択、 または他の列関数を含めることはできません (SQLSTATE 42607)。 その集合の効力範囲は、グループ、 または 照会で説明されている中間結果表です。
GROUP BY 文節が照会に指定され、 FROM、WHERE、GROUP BY および HAVING 文節からの中間結果が空集合の場合、 列関数は適用されず、照会の結果は空集合であり、 SQLCODE が +100 に設定され、SQLSTATE が '02000' に設定されます。
GROUP BY 文節が照会の中に指定されておらず、FROM、WHERE、 および HAVING の文節の中間結果が空集合の場合、 列関数は空集合に適用されます。
たとえば、次の SELECT ステートメントの結果は、 部門 D01 の社員に対して重複しない JOBCODE 値の数となります。
SELECT COUNT(DISTINCT JOBCODE) FROM CORPDATA.EMPLOYEE WHERE WORKDEPT = 'D01'
キーワード DISTINCT は、関数の引き数ではなく、 関数が適用される以前に実行される演算の指定と見なされます。 DISTINCT を指定すると、重複する値は除去されます。 暗黙のうちにまたは明示的に ALL を指定すると、重複する値は削除されません。
列関数で、たとえば次のようにして、式を使用することができます。
SELECT MAX(BONUS + 1000) INTO :TOP_SALESREP_BONUS FROM EMPLOYEE WHERE COMM > 5000
以下に示す列関数は、SYSIBM スキーマのものであり、 スキーマ名で修飾できます (たとえば、SYSIBM.COUNT(*))。