このデータベースの他のテーブルの1つから派生テーブルを作成する必要があることを知りました。しかし、私は希望の効果のステートメントを正しく組み合わせる方法がわかりません。基本的には、いくつかの基準で3つの列を移動しています.4番目の列は、派生テーブルの2つの列に解析しています。ケースステートメントを使用して1つの挿入物にSQL文を結合する
私はロジックを解決してこのクエリを機能させようとしていますが、どのように構造化するかについては少し迷っています。
INSERT INTO table (Col1, Col2, Col3, Col4, Col5)
SELECT
r.col1,
r.col2,
r.col3,
(case
when FirstBackslashPos > 0 and FirstUnderscorePos > 0
then substring(ParseValue,FirstBackslashPos+1,FirstUnderscorePos-FirstBackslashPos-1)
end) as Col4,
(case
when FirstUnderscorePos > 0 and SecondBackslashPos > 0
then substring(ParseValue,FirstUnderscorePos+1,SecondBackslashPos-FirstUnderscorePos-1)
end) as Col5
FROM (
select
r.ThisValue as ParseValue,
charindex('\',ThisValue) as FirstBackslashPos,
charindex('_',ThisValue , charindex('_',ThisValue)+1) asFirstUnderscorePos,
charindex('\',ThisValue,charindex('\',ThisValue)+1) as SecondBackslashPos
from sometable r Where somecolumn1 = 'SomeValue%')
GO
すべてが同じテーブルから来ています。私はこのデータを派生しています。どのように構造化するか分からないので、charindexesはサブケースのステートメントで見つけることができます。
どのようなエラーが表示されますか? – NonProgrammer
インラインビュー(サブクエリ)を避け、charindex呼び出しを直接 'case'式に埋め込むことを意味しますか?単純なカットアンドペーストでそれを行うことはできますが、同じcharindexコールを複数回繰り返すことになります。 charindexの結果を再利用したいのであれば、現在のクエリはそれを行うための合理的な方法です。 – SlimsGhost