ここでの私の最初の投稿は、投稿ガイドラインに正しく従っていることを願っています。そうでない場合は、指摘してください。
いくつかのサンプルデータを含む私のテーブル構造(credit_notes)は次のようになります。
index | customer_id | user_id | doc_number | doc_date | amount | scheme_description
+-----+-------------+---------+------------+------------+--------+-------------------
1 | 8 | 2 | IABCD001 | 2012-09-08 | 1232 | XYZ Scheme
2 | 8 | 2 | IABCD001 | 2012-09-08 | 2032 | XYZ Scheme
3 | 8 | 2 | IABCD002 | 2012-09-09 | 2556 | XYZ Scheme
4 | 8 | 2 | IABCD003 | 2012-09-08 | 232 | XYZ Scheme
5 | 8 | 2 | IABCD001 | 2012-09-10 | 2556 | ABC Scheme
6 | 8 | 2 | IABCD003 | 2012-09-10 | 232 | ABC Scheme
私の要件は、scheme_descriptionとdoc_dateの組み合わせごとに、グループ化して合計金額を抽出することです。これは私の現在のクエリです:
SELECT
SUM( `amount` ) AS `totalamount`,
GROUP_CONCAT( CONCAT( `amount` , ";" ) ORDER BY `index` DESC SEPARATOR '' ) AS `amounts`,
GROUP_CONCAT( CONCAT( `doc_number` , ";" ) ORDER BY `doc_number` DESC SEPARATOR '' ) AS `docno` ,
`doc_date` AS `docdate` ,
`scheme_description` AS `schemedesc`
FROM (
SELECT
`c`.`index` ,
`c`.`doc_number` ,
`c`.`doc_date` ,
`c`.`amount` ,
`c`.`scheme_description`
FROM `credit_notes` AS `c`
WHERE `c`.`customer_id` = 8
AND `c`.`user_id` LIKE 2
)t
GROUP BY `scheme_description` , `doc_date`
このクエリは次の構造を返します。
totalamount | amounts | docno | docdate | schemedesc
+-----------+----------------+-----------------------------+------------+-----------
3496 | 1232;2032;232; | IABCD001;IABCD001;IABCD003; | 2012-09-08 | XYZ Scheme
2556 | 2556; | IABCD002; | 2012-09-09 | XYZ Scheme
23477 | 255;23222; | IABCD007;IABCD007; | 2012-09-10 | ABC Scheme
ただし、これを少し変更する必要があります。個別のdocnoごとに金額の列を合計し、正しい順序でグループ化します。したがって、上記のデータに従って、クエリは次のようになります。
totalamount | amounts | docno | docdate | schemedesc
+-----------+----------------+-----------------------------+------------+-----------
3496 | 3264;232; | IABCD001;IABCD003; | 2012-09-08 | XYZ Scheme
2556 | 2556; | IABCD002; | 2012-09-09 | XYZ Scheme
23477 | 23477; | IABCD007; | 2012-09-10 | ABC Scheme
これは、group_concatとdistinctandsumを使用して可能ですか。私が見つけたすべてを読んでください、しかし私を正しい方向に向けたものを見つけることができませんでした。
これは可能ですか?