0

これは私のデータベーステーブルの例です:

id -- ペンの色 -- ペンの種類 -- ペンの価格 -- 購入日

1 -- 赤 -- タイプ A -- 10.00 -- 10/02/2013

1 -- 白 -- タイプ B -- 21.00 -- 13/02/2013

2 -- 青 -- タイプ A -- 12.00 -- 09/02/2013

1 -- 黄色 -- タイプ C -- 14.00 -- 23/02/2013

私の望ましい出力は次のとおりです。

同じIDでグループ化したい場合はどうですか?

id -- 価格 A -- 価格 A + B -- 価格 B -- 価格 C

1 -- 10.00 -- 31.00 -- 21.00 -- 14.00

2 -- 12.00 -- 0 -- 0 -- 0

私はこれを行うのに深刻な問題を抱えています。簡単かもしれませんが、アイデアが不足しているだけだと思います。

4

2 に答える 2

1

日付ごとに 1 つの ID とタイプのみを想定すると、これは機能するはずです。

<cfquery name='b'>
SELECT ID
    , AVG( DECODE( Pen_Type, 'Type A', Pen_Price, 0 ) ) AS Price_A
    , AVG( DECODE( Pen_Type, 'Type B', Pen_Price, 0 ) ) AS Price_B
    , AVG( DECODE( Pen_Type, 'Type C', Pen_Price, 0 ) ) AS Price_C
FROM Pen_Table
WHERE Date_Purchase = #Date#
GROUP BY ID
</cfquery>

AVG の集計関数は任意の集計関数であることに注意してください。その唯一の目的は、id ごとに 1 行にすることです。これもまた、ID ごと、日付ごとにペンの種類が 1 つしかない場合にのみ機能します。それ以上の行がある場合、これは機能しません。あなたが提供した情報を考えると、これはうまくいくと思います。クエリで実行しようとする場合と比較して、出力で A + B を簡単に計算できます。

お役に立てれば。

于 2013-03-01T04:09:26.113 に答える
0

正確なニーズはまだはっきりしていませんが、cfoutput の group 属性が正しい道を示してくれるかもしれません。あなたの場合、このようなことを試してください。

 <cfquery name="yourquery">
 select blah, blah
 order by id
 </cfquery>

ID 順が重要です。それはにつながる

<cfoutput query="yourquery" group ="id">
#grouped data#
<cfoutput>
#ungrouped data#
</cfoutput>
#more grouped data if you want#
</cfoutput>

それが一般的な考え方です。特定の要件に合わせて調整できる必要があります。

于 2013-03-01T03:42:01.080 に答える