将行数据动态转换为动态列,这些列是使用pivot的pivoted column和non-pivoted columns的组合

时间:2018-05-12 10:16:12

标签: sql

我最近开始了我的sql开发之旅,并且遇到了一个困扰我很多天的场景。

我需要获得一个基于我希望的数据输出,但感觉它不是数据透视的一般实现,因为列需要在现有列和枢轴周列的组合中进行生成,您可以查看以下解释。

根据场景我有两张桌子 table1:事务表,如下所示 TRANSACTIONS (table1)

表2:Calander表 calender table where week and month map for particular year recides in this table

我的输出应该像我的html代码的输出(请点击运行代码段)



<!DOCTYPE html>
<html>

<head>
  <style>
    table {
      font-family: arial, sans-serif;
      border-collapse: collapse;
      width: 100%;
    }
    
    td,
    th {
      border: 1px solid #dddddd;
      text-align: left;
      padding: 8px;
    }
    
    tr:nth-child(even) {
      background-color: #dddddd;
    }
  </style>
</head>

<body>

  <h2>HTML Table</h2>

  <table>
    <tr>
      <th>SAPID</th>
      <th>MONDAY_3</th>
      <th>TUESDAY_3</th>
      <th>WEDNESDAY_3</th>
      <th>THURSDAY_3</th>
      <th>FRIDAY_3</th>
      <th>SATYURDAY_3</th>
      <th>SUNDAY_3</th>
      <th>MONDAY_4</th>
      <th>TUESDAY_4</th>
      <th>WEDNESDAY_4</th>
      <th>THURSDAY_4</th>
      <th>FRIDAY_4</th>
      <th>SATYURDAY_4</th>
      <th>SUNDAY_4</th>
    </tr>
    <tr>
      <td>63424123</td>
      <td>8</td>
      <td>6</td>
      <td>4</td>
      <td>8</td>
      <td>8</td>
      <td>6</td>
      <td>6</td>
      <td>4</td>
      <td>8</td>
      <td>8</td>
      <td>8</td>
      <td>6</td>
      <td>4</td>
      <td>8</td>

    </tr>
    <tr>
      <td>6882233</td>
      <td>8</td>
      <td>6</td>
      <td>4</td>
      <td>8</td>
      <td>8</td>
      <td>6</td>
      <td>6</td>
      <td>4</td>
      <td>8</td>
      <td>8</td>
      <td>8</td>
      <td>6</td>
      <td>4</td>
      <td>8</td>

    </tr>
  </table>

</body>

</html>
&#13;
&#13;
&#13;

我试过下面的sql查询

select * from (select sap_id,week, 
monday,tuesday,wednesday,thursday,friday,saturday,sunday from 
ssc_transactions)
pivot (sum(week) for week in (select week from ssc_calendar_month_week_map 
where month like 'Feb' and year='2018') )
如果我以优化的方式获得所需的解决方案,它将非常有用。

0 个答案:

没有答案