タイトルが意味を成しているのか、それとも sql や tsql に関連しているのかはわかりません。私は比較的 sql に慣れておらず、vba のバックグラウンドを持っているため、以下は私が持っているものの半分です (私はそれを修正しましたが、BI パッケージはSQLリーダーは基本的なselect/from/where's..を作成し、joinではなくwhereを使用しているようです)。理解に役立つ場合は、それを使用してolapキューブにデータを入力します..したがって、読み取られる値が1つあり、関連するフィールドも多数必要です。
私はここから少し学ぶことができました(したがって、tsqlである可能性があると考えているのはなぜですか)が、これで立ち往生しています。
値 *dbo.gl_acct_detail.db_amt_cc - dbo.gl_acct_detail.cr_amt_cc* を取得しています。これは月 (フォーム accouting_period)、org_code、acc_code、および mkt_segment に関連付けられています
Mkt_segment は、prj_code と phase_code によって acct_detail テーブルに「結合」された prj_phase テーブルから取得されます。問題は、一部の acct_code には prj_code または Phase_code がないことです..それらはヌルです..したがって、prj_phase テーブルへのリンクがなく、mkt_segment がない可能性があります。この状況では、mkt_segment 値 (取得できない) の代わりにハードコードされた/デフォルト値を使用したいと考えています。Select ステートメントで mkt_segment に Case When を使用しようとしましたが、うまくいきませんでした。
別のクエリでこれを行うことができます (prj_phase テーブルを除外し、select ステートメントで値をハードコーディングし、dbo.acct_code.phase_code が null である場所を配置します)。クエリ。
SELECT
CASE WHEN substring(cast(dbo.gl_acct_detail.accounting_period as CHAR), 5, 2) < '07'
THEN Left(dbo.gl_acct_detail.accounting_period, 6) - 94
ELSE Left(dbo.gl_acct_detail.accounting_period, 6) - 6
end,
dbo.gl_acct_detail.org_code,
dbo.gl_acct_detail.acct_code,
dbo.prj_phase.mkt_segment,
CASE WHEN (dbo.gl_acct_detail.fiscal_per_nbr <> '12' and dbo.gl_acct_detail.acct_code = '70199')
THEN '0'
ELSE dbo.gl_acct_detail.db_amt_cc - dbo.gl_acct_detail.cr_amt_cc
end
FROM
dbo.gl_acct_detail, dbo.sys_defaults, dbo.prj_phase
WHERE
dbo.gl_acct_detail.fiscal_year = dbo.sys_defaults.current_fiscal_year -1
AND dbo.gl_acct_detail.phase_code = dbo.prj_phase.phase_code
AND dbo.gl_acct_detail.prj_code = dbo.prj_phase.prj_code
何を調べるかについてのヘルプ/提案は大歓迎です!!