0

どうすればこれを行うことができますか(本番ではありません。きれいではないことを知ってください):

SELECT mat1_01_06, count(mat1_01_06), MAX(mat_no),
MAX(
        (
          SELECT 
          document.mat_no
          FROM TimeMatters11.lntmu11.document 
          WHERE matter.sysid = document.mat_id and ccode = 'SUMS' 
        )
    )
FROM TimeMatters11.lntmu11.matter
WHERE con_no in 
('PR12-221' , '...', '...)
AND mat1_01_06 != ''
GROUP BY mat1_01_06
HAVING count(mat1_01_06) > 1
ORDER BY count(mat1_01_06) desc

出力は

メッセージ 130、レベル 15、状態 1、行 7
集計またはサブクエリを含む式に対して集計関数を実行できません。

「SUMS」とコード化された子ドキュメントを持つ mat_no が欲しいだけです

編集 2

サブクエリなしで出力

Index                Cnt    mat_no(not useful)
112565/11            25     12-61692
16601/11             12     12-58850
34934/11             12     12-58854
34935/11             12     12-61983
704612/12            12     12-55487
712166/12            11     12-55613
707588/12            9      12-55604
91394/11             8      12-57115

望ましい

Index           Cnt     Mat_no that contains doc 'SUMS' 
112565/11   25      12-61692
16601/11    12      12-58850
34934/11    12      12-58854
34935/11    12      12-61983
704612/12   12      12-55487
712166/12   11      12-55613
707588/12   10      12-55604

mat_no はインデックスに対して多対 1 の関係であり、子ドキュメント「SUMS」を持つ特定の mat_no がマスター レコードです。次に集中する必要があるもの。混乱させてごめんなさい。

4

1 に答える 1

2

これは、あなたの望むことですか?

SELECT mat1_01_06, count(mat1_01_06), MAX(mat_no),
       Mat_no =  (
          SELECT 
          MAX(document.mat_no)
          FROM TimeMatters11.lntmu11.document 
          WHERE matter.sysid = document.mat_id and ccode = 'SUMS' 
        )
FROM TimeMatters11.lntmu11.matter
WHERE con_no in 
('PR12-221' , '...', '...')
AND mat1_01_06 != ''
GROUP BY mat1_01_06
HAVING count(mat1_01_06) > 1
ORDER BY count(mat1_01_06) desc
于 2012-09-13T20:30:48.760 に答える