1

1つの列でグループ化したテーブルがあり、さまざまな値とこの値の数を出力します。

activty | sum
-------------
Form    |  1
Login   |  4
Reg     |  3

ここにコード例があります: http://sqlfiddle.com/#!2/c6faf/2/0

しかし、1行の値(カウント)を持つ列名に異なる値が必要です。

このような:

Form | Login | Reg
------------------
  1  |   4   |  3

PIVOT 操作を試みましたが、うまくいきません。私は何を間違っていますか?

ここに私のコードがあります: http://sqlfiddle.com/#!2/c6faf/35/0

前もって感謝します!

br

4

3 に答える 3

2

どうぞ

SELECT 
MAX(CASE activity WHEN 'Form' THEN mysum ELSE NULL END) AS Form,
MAX(CASE activity WHEN 'Login' THEN mysum ELSE NULL END) AS Login,
MAX(CASE activity WHEN 'Reg' THEN mysum ELSE NULL END) AS Reg
FROM (
SELECT activity, COUNT(activity) AS mysum FROM tbl_tracking
            WHERE id = 141 AND variant = 2
            GROUP BY activity
)sq

しかし、私の意見では、そのようなフォーマットはデータベース層ではなく、アプリケーション層で行うべきです。

于 2013-06-07T08:34:28.470 に答える
1

これを試して:

SELECT  
    SUM(IF(activity = 'Form',1,0)) as 'Form',
    SUM(IF(activity = 'Login',1,0)) as 'Login',
    SUM(IF(activity = 'Reg',1,0)) as 'Reg'
FROM 
    tbl_tracking
WHERE 
    id = 141 
    AND variant = 2

Sqlフィドルはこちら

于 2013-06-07T08:34:57.810 に答える