[ad_1]
私のサブクエリは単一の値を返し、その値はカンマで区切られた複数の値で構成されています。
私のサブクエリは次のようなものです:-
SQL
select ApplGLCd from ebreportstructureho where grpname = 'Appendix'
出力は次のとおりです:-0034,0035,0064,0026,0030,0031,0056
ストアドプロシージャでサブクエリを使用すると、エラーは発生しませんが、残念ながら発生しないデータが返されるはずです。
私が試したこと:
SQL
SELECT date,SUM(clcr-cldr) AS ClosingCr FROM ebgltransaction WHERE brncd='0002' AND glcd IN (select ApplGLCd from ebreportstructureho where grpname = 'Appendix') AND date BETWEEN '20151001' AND '20151031' GROUP BY date ORDER BY date
解決策 1
コードを 2 つの部分に分割する必要があります。 最初に、サブクエリの返された結果を分割してテーブル変数に入力し、2 番目の部分でこのテーブル変数を使用して結果を取得します。 擬似コードは次のようになります
SQL
DECLARE @TBL TABLE ( GL_ID VARCHAR(100) ) INSERT INTO @TBL (GL_ID) SELECT Item FROM (select ApplGLCd from ebreportstructureho where grpname = 'Appendix') T CROSS APPLY dbo.SplitStrings_Moden(T.ApplGLCd,',') SELECT date,SUM(clcr-cldr) AS ClosingCr FROM ebgltransaction INNER JOIN @TBL T ON ebgltransaction.glcd = T.GL_ID WHERE brncd='0002' AND date BETWEEN '20151001' AND '20151031' GROUP BY date ORDER BY date
分割機能については以下を参照してください
文字列を正しい方法で分割する – または次善の方法[^]
解決策 2
後続または先頭のジャンク データまたはスペースがいくつかあるはずです。データが要件に従っているかどうかを確認してください
[ad_2]
コメント