0

次のクエリを使用して、グループ化された行を返します。

SELECT Work, COUNT(*) AS count, Amount, SUM(Amount) AS Total FROM work_times GROUP BY Work, Amount

グループ化のデータの下に各グループ化の個々の日付をリストできるように、これを適応させたいと思います。

したがって、次の表がある場合:

ID | 仕事| 金額| 日にち

1 | セラピーセッション| £40| 2013-02-02
2 | コンサルティングセッション| £50| 2013-02-01
3 | セラピーセッション| £20| 2013-02-03
4 | コンサルティングセッション| £50| 2013-02-08
5 | コンサルティングセッション| £50| 2013-02-15
6 | セラピーセッション| £40| 2013-02-09
7 | コンサルティングセッション| £50| 2013-02-22
8 | セラピーセッション| £40| 2013-02-16
9 | セラピーセッション| £20| 2013-02-10
10 | コンサルティングセッション| £50| 2013-03-01

クエリは以下を返すことができます:

5回のコンサルティングセッション@各£50:£250

2013年2月1日2013年2月
8日2013年2月
15日2013年2月
22日2013年
3月1日

3回のセラピーセッション@各40ポンド:120ポンド

2013年2月2日2013年2月
9日2013年2月
16日

2回のセラピーセッション@各20ポンド:40ポンド

2013年2月3日2013年2月
10日

クエリで行をグループ化したため、個々の行を参照する方法がわかりません。

4

3 に答える 3

1
SELECT  b.*, c.date2
FROM    (
            SELECT  a.work, 
                    COUNT(*) totalCount, 
                    SUM(Amount) totalAmount
            FROM    tableName a
            GROUP   BY a.work, amount
        ) b
        INNER JOIN
        (
            SELECT  a.work, DATE_FORMAT(Date,'%D %M %Y') date2,
                    date
            FROM    tableName a
        ) c ON b.work = c.work
ORDER   BY b.work, b.totalCount, c.date
于 2013-02-21T23:29:34.903 に答える
1

以下のコードは、JWの回答を少し変更したものです。

SELECT  b.*, c.date2
FROM    (
            SELECT a.work, a.amount, 
                   COUNT(*) totalCount, 
                   SUM(Amount) totalAmount
            FROM tableName a
            GROUP BY a.work, a.amount
        ) b
        INNER JOIN
        (
            SELECT a.work, a.amount, DATE_FORMAT(Date,'%D %M %Y') date2,
                    date
            FROM tableName a
        ) c ON b.work = c.work and b.amount=c.amount
ORDER BY b.work, b.totalCount, c.date

第1サブクエリ、第2サブクエリ、JOIN式にamountを追加しました。

うまくいけば、このリンクが機能します: http://sqlfiddle.com/#!2/e0ec1/24

于 2013-02-22T00:06:22.963 に答える
0

2 つのクエリと UNION 演算子は、必要な形式を提供する必要があります。 SQL フィドル


SELECT '' AS ID, Work, '' AS Date, Amount, SUM(Amount) AS Total
FROM TableName 
GROUP BY Work, Amount
UNION ALL
SELECT ID, Work, Date, Amount, '' AS Total
FROM TableName
ORDER BY Work, Amount, Date;

于 2013-02-22T00:37:55.020 に答える