正規化されていないデータベースで作業していますが、権限がないため正規化できません。問題は
私は2つのテーブルを持っています
- Gl_アカウント
- 試算表
テーブルの構造は次のようになります
Gl_Account (空のテーブルまたは古いデータを含む)
loc | gl_acct | HMISTOTAL
-------------------------------
| |
-------------------------------
試算表
loc | g1101 | g1102 | g1103
----------------------------------------
1400 | 20 | 30 | 0
----------------------------------------
1500 | 10 | 0 | 40
----------------------------------------
今、私がやりたいことは
Gl_Account テーブルにないレコードを、trialBalanceテーブルからそれぞれの GL_acct 番号を使用して取得します。ここで、それぞれのgXXXX (試算表) の下の金額はゼロではありません。
例を挙げて説明しましょう。上記の表を念頭に置いて、テーブルGL_Accountを次のように入力したいと思います
GL_アカウント
loc | gl_acct | HMISTOTAL
---------------------------------------
1400 | 1101 | 20
---------------------------------------
1400 | 1102 | 30
---------------------------------------
1500 | 1101 | 10
---------------------------------------
1500 | 1103 | 40
---------------------------------------
このクエリを試してみましたが、キャプチャされた最初のレコードのみが gl_accountt テーブルに入力されます。今のところ金額の部分はスキップしました..しかし、それは必須です.
insert into Gl_Account (loc,gl_acct,HMISTOTAL)
select * from (
select a.loc,
CASE
WHEN a.G1101 <> 0 THEN '1101'
WHEN a.G1102 <> 0 THEN '1102'
WHEN a.G1104 <> 0 THEN '1104'
WHEN a.G1151 <> 0 THEN '1151'
END AS gl_Acct
'0' as HMISTOTAL
FROM trialBalance a where NOT EXISTS
(SELECT 1 from GL_Account b WHERE b.loc = a.loc)) ab
前もって感謝します。