3

前述の出力を提供する私のビューは次のとおりです。

CREATE
  ALGORITHM=UNDEFINED
  DEFINER=`root`@`localhost`
  SQL SECURITY DEFINER
VIEW new_view AS
  SELECT 'pcount'    AS ind_type,
         SUM(pcount) AS Index_val
  FROM   temp
UNION
  SELECT 'ncount',
         SUM(ncount)
  FROM   temp
;

結果:

+---------+----------+
| | ind_type | Index_val |
+---------+----------+
| | pcount | 76 |
| | ncount | 434 |
+---------+----------+

pcountこれでncount、別のテーブルを使用して取得する別のキーを作成しましたMAX()

CREATE
  ALGORITHM=UNDEFINED
  DEFINER=`root`@`localhost`
  SQL SECURITY DEFINER
VIEW view_name AS
  SELECT pcount,
         ncount
  FROM   temp
  WHERE  id = (SELECT MAX(id) FROM temp)
;

結果を与える:

+--------+--------+
| | pcount | ncount |
+--------+--------+
| | 56 | 56 |
+--------+--------+

この結果は上記のようにどのように見ることができますか?

ステファンの答えによる結果:

+----------+-----------+
| ind_type | Index_val |
+----------+-----------+
|        0 |         0 |
+----------+-----------+
1 row in set (0.01 sec)
4

2 に答える 2

1

2 番目の例では、(ピボットを解除する列の数に応じて) 2 つの行で構成される仮想テーブルを使用して、クエリの結果をピボット解除できます。これは次のようになります。

SELECT t.ind_type,
       CASE t.ind_type
         WHEN 'pcount' THEN v.pcount
         ELSE               v.ncount
       END AS Index_val
FROM   temp AS v
CROSS
JOIN   (
       SELECT 'pcount' AS ind_type
       UNION ALL
       SELECT 'ncount'
       ) AS t
WHERE  v.id = (SELECT MAX(id) FROM temp)
于 2013-09-19T07:14:47.157 に答える