我遍历数据集,我使用CASE
检查条件(uut_status)是否设置为'传递'。如果设置了那个条件,那么我想要记录。如果不是,那我就不会。
目前所有记录都会回来,无论我是否想要。我不想要的是将case语句中检查的值设置为null:
select CASE WHEN UUT_STATUS = 'passed' THEN uut_serial_number END,
CASE WHEN UUT_STATUS = 'passed' THEN uut_status END,
CASE WHEN UUT_STATUS = 'passed' THEN min(START_DATE_TIME) END
from
uut_result
where
(START_DATE_TIME > '2016-06-16 00:00:00' AND START_DATE_TIME < '2016-06-16 23:59:59') and product_id=2513 and BATCH_SERIAL_NUMBER like "12 Initial Response Test"
按uut_serial_number分组,uut_status,product_id
由uut_serial_number asc;
正在回归:
SN123 Passed 2016-06-16 08:50:20
SN124 Passed 2016-06-16 16:46:57
NULL NULL NULL
SN126 Passed 2016-06-16 00:43:59
当我想要它返回时
SN123 Passed 2016-06-16 08:50:20
SN124 Passed 2016-06-16 16:46:57
SN126 Passed 2016-06-16 00:43:59
如何简单地从退货集中排除我不想要的记录?
澄清 - 例如SN456。 SN456在上午9点进行测试。它失败。但是,经过调整后,它会在上午9点30分再次测试并通过。 SN457在上午9点05分进行测试。它过去了。
我们想要的是:
SN457 09:05:00
我们不想要的是:
SN457 09:05:00
SN456 09:30:00
SN456第一次测试失败,因此不会出现在第一次测试结果中。
希望更清楚。
答案 0 :(得分:2)
只需在if ($this->array_search($schedule->getStart(), $schedule->getDescription(), $pdfArray['rows'])
continue;//Or any other kind of logic you want. At this place you know that description and date staet exist in at your array level
$pdfArray['other']++; // Yes this is initialized
$pdfArray['rows'][$i]['id'] = $schedule->getId();
$pdfArray['rows'][$i]['date'] = $schedule->getStart()->format('d.m.Y');
$pdfArray['rows'][$i]['dateSort'] = $schedule->getStart()->format('Y-m-d H:i');
$pdfArray['rows'][$i]['from'] = $schedule->getStart()->format('H:i');
$pdfArray['rows'][$i]['to'] = $schedule->getEnd()->format('H:i');
$pdfArray['rows'][$i]['desc'] = $schedule->getDescription();
条件中添加AND UUT_STATUS = 'passed'
即可。根本不需要WHERE
。
编辑:根据您的评论:
CASE