0
かどうかに基づいて、2つの列の間の選択:、私は新しい列を追加する必要がTeradataのは - それは数字で始まるか、私はに似たクエリはありませ
SELECT
s.cola, s.colb, t.colc, t.cold, u.cole, u.colf, u.colg, u.colh, u.coli, u.colj, u.colk, u.coll
FROM table1 s
INNER JOIN table2 t
ON s.colb = t.colc
INNER JOIN table3 u
ON u.colm = t.cold
WHERE cast(s.cola as date) between date '2017-11-06' and date '2017-11-10'
ORDER BY 3
はにある、col_new
と呼ばれますu.colm
またはu.coln
のいずれかで入力してください。その列が数字で始まる場合、この列の値はu.colm
になります。それ以外の場合は、u.coln
の値になります。テーブルu
の各エントリについて、u.coln
またはu.colm
のいずれかが数字で始まることがわかっています。番号で始まるエントリが識別できるかどう
は、私がテストするために、次のクエリを試してみました:
SELECT CASE WHEN ISNUMERIC(SUBSTRING(LTRIM(colm), 1, 1)) = 1
THEN 'yes'
ELSE 'no'
END AS col_new
FROM table_u
それはエラーを返しました:Syntax error: expected something between '(' and the 'substring' keyword.
は親切に解決策を提案します。
編集: 正確なエラー:
SELECT (CASE WHEN LEFT(LTRIM(colm), 1) BETWEEN '0' AND '9' THEN 'yes'
ELSE 'no'
END) AS col_new
FROM table_u;
LEFT()
は、文字列の最初の "n" の文字のための便利な速記です:
[Teradata Database] [3706] Syntax error: expected something between '(' and the 'substring' keyword.
正確なエラーを表示できますか?あなたの構文は正しいようです。 –
また、数字で始まる場合は、代わりに「LEFT」を試してみてください。 'ISNUMERIC(LEFT(LTRIM(colm)、1))= 1' –
Teradataから正確なエラーメッセージを追加しました。 –