我有下表:
<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中复制吗?