1

右。したがって、次のSQLServerクエリがあります。

SELECT        St.Financial_Account_ID, St.Business_ID, St.Financial_Account_Desc, St.Financial_Account_Type_ID, St.Financial_Account_Active, 
                     St.Financial_Account_OpeningBalance, St.CRTotal, St.DRTotal, CASE st.Financial_Account_Type_ID WHEN 1 THEN (DRTotal - CRTotal) 
                     WHEN 2 THEN (CRTotal - DRTotal) WHEN 3 THEN (CRTotal - DRTotal) WHEN 4 THEN (DRTotal - CRTotal) END AS Balance, 
                     Financial_Account_Type.Financial_Account_Type_Desc
FROM            (SELECT        Financial_Account_ID, Business_ID, Financial_Account_Desc, Financial_Account_Type_ID, Financial_Account_Active, 
                                                Financial_Account_OpeningBalance,
                                                    (SELECT        ISNULL(SUM(Financial_Transaction_Amount), 0) AS Expr1
                                                      FROM            Financial_Transaction AS Financial_Transaction_1
                                                      WHERE        (Financial_Transaction_CR_AccountID = FA.Financial_Account_ID) AND (Financial_Transaction_Date <= @ToDate)) AS CRTotal,
                                                    (SELECT        ISNULL(SUM(Financial_Transaction_Amount), 0) AS Expr1
                                                      FROM            Financial_Transaction AS Financial_Transaction_2
                                                      WHERE        (Financial_Transaction_DR_AccountID = FA.Financial_Account_ID) AND (Financial_Transaction_Date <= @ToDate)) AS DRTotal
                      FROM            Financial_Account AS FA) AS St INNER JOIN
                     Financial_Account_Type ON St.Financial_Account_Type_ID = Financial_Account_Type.Financial_Account_Type_ID
WHERE        (St.Financial_Account_Type_ID = 1 OR
                     St.Financial_Account_Type_ID = 2) AND (St.Business_ID = @BusinessID) AND (CASE st.Financial_Account_Type_ID WHEN 1 THEN (DRTotal - CRTotal) 
                     WHEN 2 THEN (CRTotal - DRTotal) WHEN 3 THEN (CRTotal - DRTotal) WHEN 4 THEN (DRTotal - CRTotal) END <> 0)

これは私の貸借対照表を取得し、telerikレポートで使用されるため、変数などが使用されます。

ここで、「比較貸借対照表」を作成する必要があります。これについてはそれほど複雑ではありませんが、そのためには、上記のレポートを異なる日付で2回生成し、パーセンテージを変更した列を作成する必要があります。

これをすべて行う方法はわかりますが、完了するまでにかなり厄介になり、何かをデバッグするのは面倒な作業になります。さらに、すべてを言い終えたら、これは非常に単純な例になります。ここからさらに複雑になるだけです。

私が探しているのは次のいずれかです。

私が生成しているサブテーブルのデバッグを簡素化するquerybuilderタイプのthingo、またはこれらのものを書くためのより手続き的な方法があります...など

クエリゴークエリゴー

そのようなことは機能しますか?どうすればすべてをリンクできますか?記事は見つかりませんでしたが、すべてが基本的なselectステートメントを導入しているように見えます。

私自身の読書をして幸せです、ただ正しい方向に押す必要があります。

ご協力いただきありがとうございます

4

1 に答える 1

2

Common Table Expressions をご覧ください。それらはそのコードをより保守しやすくし、パフォーマンスを向上させる可能性があります。

http://msdn.microsoft.com/en-us/library/ms190766.aspx

于 2011-06-27T03:33:05.070 に答える