根据条件加入两行

时间:2014-10-28 10:32:33

标签: python mysql sql

我有下表:

<table border="1">
  <thead>
  <tr>
    <td>ID</td>
    <td>Description</td>
    <td>DescID</td>
    <td>From</td>
    <td>To</td>
    <td>Date</td>
  </tr>
  </thead>
  
  <tr>
    <td>1</td>
    <td>Status</td>
    <td>20</td>
    <td></td>
    <td>Assigned</td>
    <td>2014-10-27</td>
  </tr>
  <tr>
    <td>2</td>
    <td>Status</td>
    <td>20</td>
    <td>Assigned</td>
    <td>Working</td>
    <td>2014-10-27</td>
  </tr>
  <tr>
    <td>4</td>
    <td>Status</td>
    <td>20</td>
    <td>Working</td>
    <td>Paused</td>
    <td>2014-10-27</td>
  </tr>
  <tr>
    <td>7</td>
    <td>Status</td>
    <td>20</td>
    <td>Paused</td>
    <td>Working</td>
    <td>2014-10-27</td>
  </tr>
  <tr>
    <td>9</td>
    <td>Status</td>
    <td>20</td>
    <td>Working</td>
    <td>Pending</td>
    <td>2014-10-27</td>
  </tr>
  <tr>
    <td>14</td>
    <td>Pending Reason</td>
    <td>100</td>
    <td></td>
    <td>Pending Client</td>
    <td>2014-10-27</td>
  </tr>
  <tr>
    <td>15</td>
    <td>Status</td>
    <td>20</td>
    <td>Pending</td>
    <td>Working</td>
    <td>2014-10-27</td>
  </tr>
  <tr>
    <td>17</td>
    <td>Pending Reason</td>
    <td>20</td>
    <td>Pending Client</td>
    <td></td>
    <td>2014-10-27</td>
  </tr>
  <tr>
    <td>18</td>
    <td>Status</td>
    <td>20</td>
    <td>Working</td>
    <td>Paused</td>
    <td>2014-10-27</td>
  </tr>
  <tr>
    <td>19</td>
    <td>Status</td>
    <td>20</td>
    <td>Paused</td>
    <td>Working</td>
    <td>2014-10-27</td>
  </tr>
  <tr>
    <td>20</td>
    <td>Status</td>
    <td>20</td>
    <td>Working</td>
    <td>Pending</td>
    <td>2014-10-27</td>
  </tr>
  <tr>
    <td>22</td>
    <td>Pending Reason</td>
    <td>100</td>
    <td></td>
    <td>Pending Client</td>
    <td>2014-10-27</td>
  </tr>
  <tr>
    <td>23</td>
    <td>Status</td>
    <td>20</td>
    <td>Pending</td>
    <td>Working</td>
    <td>2014-10-27</td>
  </tr>
  <tr>
    <td>27</td>
    <td>Pending Reason</td>
    <td>100</td>
    <td>Pending Client</td>
    <td></td>
    <td>2014-10-27</td>
  </tr>
  <tr>
    <td>30</td>
    <td>Status</td>
    <td>20</td>
    <td>Working</td>
    <td>Solved</td>
    <td>2014-10-27</td>
  </tr>
  <tr>
    <td>35</td>
    <td>Solved Type</td>
    <td>155</td>
    <td></td>
    <td>Successfully</td>
    <td>2014-10-27</td>
  </tr>
</table>

这是我在mysql数据库上的内容,信息由支持票务系统生成。

正如您所看到的,故障单状态更改始终由DescID 20标识,当故障单进入状态待定(等待来自客户端的信息)时,还会插入由DescID 100标识的待处理原因。设置为已解决(取决于是否成功),还插入了一个解析类型的DescID 155。

每当票证从AnyStatus退回到待处理时,添加了一个原因(DescID 180),当票证从Pending返回时,DescID 180被设置回空白。

我需要以某种方式(知道我可以依赖于DescID)将状态改变的原因分组以获得类似

的内容

ID描述描述来自到目的地原因

每当状态不需要理由时,如果有待更改,则最后一个应该为空。应将待处理原因添加到原因列。

我试过用python中的循环来做这个但是我卡住了。我能够检测到状态变化,但我不确定如何找到正确的原因。

请注意,ID并不总是连续的,但它总是会增加。 这意味着如果状态更改为待处理的是ID 10,则下一个ID,即使它的ID为100,也将是它的待定原因。

希望这是明确的。如果这可以直接用SQL查询完成,那将是非常棒的。 如果不是,我想使用python(循环,数组)来解决我的问题。

谢谢。

稍后编辑:

我刚刚在Excel中创建它,现在我想知道是否可以将它复制到纯SQL。 excel公式如下:

<table border="1px">
<tr>
  <td>A</td>
  <td>B</td>
  <td>C</td>
  <td>D</td>
  <td>E</td>
  <td>F</td>
  <td>G</td>
  <td>H</td>
</tr>
  <tr>
<td>15</td><td>9</td><td>Status</td><td>20</td><td>Working</td><td>Pending</td><td>2014-10-27</td><td></td></tr>
<tr>
  <td>16</td><td>14</td><td>Pending</td><td>Reason</td><td>100</td><td>Pending Client</td><td>2014-10-27</td><td></td></tr>
  </table>

在G15上应用的公式将是

如果(F15 = “待定”,F16 “”)

这将返回以下第15行:

<table border="1px">
<tr><td>A</td><td>B</td><td>C</td><td>D</td><td>E</td><td>F</td><td>G</td><td>H</td></tr>
<tr><td>15</td><td>9</td><td>Status</td><td>20</td><td>Working</td><td>Pending</td><td>2014-10-27</td><td>Pending Client</td></tr></table>

所以现在我可以完全忽略状态100(仅提供原因),因为我将它放在它的传入状态20旁边。

希望这有任何意义,你认为它可以在SQL中复制吗?

0 个答案:

没有答案