У меня есть таблица, в которой хранятся удары сотрудников в 1 строку для каждого формата PUNCHDTM. Таблица имеет SHIFTID для сопоставления всех ударов, относящихся к их смещению, и я хочу получить способ получить все отдельные удары в их собственном столбце, давая мне по 1 строке на SHIFTID. Я не могу определить, сколько существует ударов (у некоторых есть 2, у некоторых по 10,12 ??), что заставляет меня думать, что что-то динамическое будет трудно. Если невозможно получить все удары динамически, то, вероятно, будет достаточно просто захватить первые 6 ударов.
Вот примерный набор данных (я оценил удары за смену с DENSE_RANK)
<table border="1">
<tr><th>EMPLOYEEID </th><th> SHIFTID </th><th> SHIFTDATE </th><th> PUNCHDTM </th><th> RANK</th></tr>
<tr><td>0000016431 </td><td> 1400510 </td><td> 10/16/2017 </td><td> 10/16/2017 03:29 pm </td><td> 1</td></tr>
<tr><td>0000016431 </td><td> 1400510 </td><td> 10/16/2017 </td><td> 10/16/2017 08:02 pm </td><td> 2</td></tr>
<tr><td>0000016431 </td><td> 1400510 </td><td> 10/16/2017 </td><td> 10/16/2017 08:32 pm </td><td> 3</td></tr>
<tr><td>0000016431 </td><td> 1400510 </td><td> 10/16/2017 </td><td> 10/16/2017 10:30 pm </td><td> 4</td></tr>
<tr><td>0000016431 </td><td> 1404581 </td><td> 10/17/2017 </td><td> 10/17/2017 02:57 pm </td><td> 1</td></tr>
<tr><td>0000016431 </td><td> 1404581 </td><td> 10/17/2017 </td><td> 10/17/2017 07:20 pm </td><td> 2</td></tr>
</table>
И желаемый результат набора
<table border="1">
<tr><th>EMPLOYEEID </th><th> SHIFTID </th><th> SHIFTDATE </th><th> PUNCHDTM1 </th><th> PUNCHDTM2 </th><th> PUNCHDTM3 </th><th> PUNCHDTM4</th></tr>
<tr><td>0000016431 </td><td> 1400510 </td><td> 10/16/2017 </td><td> 10/16/2017 03:29 pm </td><td> 10/16/2017 08:02 pm </td><td> 10/16/2017 08:32 pm </td><td> 10/16/2017 10:30 pm</td></tr>
<tr><td>0000016431 </td><td> 1404581 </td><td> 10/17/2017 </td><td> 10/17/2017 02:57 pm </td><td> 10/17/2017 07:20 pm </td><td> NULL </td><td> NULL</td></tr>
</table>