在MySQL中创建视图并将行转换为列

时间:2016-12-16 08:04:01

标签: mysql sql view pivot

我有一张桌子;表A.

    OkHttpClient client = getOkHttpClient();
    Request request = new Request.Builder()
            .url("https://nghttp2.org:443") // The Http2Server should be running here.
            .build();
    try {
        Socket socket = client.socketFactory().createSocket();
        Http2Connection con = new Http2Connection.Builder(true)
            .socket(socket)
            .pushObserver(new PushObserver(){

            @Override
            public boolean onRequest(int streamId, List<Header> requestHeaders) {
                // do something here
                return true;
            }

            @Override
            public boolean onHeaders(int streamId,
                List<Header> responseHeaders, boolean last) {
                // do something here
                return true;
            }

            @Override
            public boolean onData(int streamId, BufferedSource source,
                int byteCount, boolean last) throws IOException {
                // do something here
                return true;
            }

            @Override
            public void onReset(int streamId, ErrorCode errorCode) {
                // do something
            }
        }).build();

    } catch (IOException e) {
        LOG.error("IOException", e);
    }

我想将行value_deal转换为具有相同月份的列,并将其作为视图,就像这样。

+-----+----------+
|month|value_deal|
+-----+----------+
|JAN  |10        |
+-----+----------+
|JAN  |20        |
+-----+----------+
|FEB  |30        |
+-----+----------+
|FEB  |40        |
+-----+----------+

我尝试过使用动态转换行到here中的列。但是我无法在Create View函数中插入代码。

有人可以帮忙吗? PLS

1 个答案:

答案 0 :(得分:0)

我将表测试命名为以下查询返回所需的结果

SELECT QRY.M,
       SUBSTRING_INDEX(SUBSTRING_INDEX(QRY.CONC, ',', 1), ',', -1) as value_deal1,
       SUBSTRING_INDEX(SUBSTRING_INDEX(QRY.CONC, ',', 2), ',', -1) as value_deal2
FROM   (SELECT MONTH AS M, GROUP_CONCAT(value_deal) AS CONC
        FROM test1
        GROUP BY MONTH) QRY;

基本上使用group concat函数在一列中获取month的所有值,然后使用in built string函数将列拆分为多个列。

这是demo