当前位置: 代码迷 >> Sql Server >> SQL 行转换为列的有关问题
  详细解决方案

SQL 行转换为列的有关问题

热度:78   发布时间:2016-04-27 13:56:01.0
SQL 行转换为列的问题
目前表结构是这样的
PCBCode LineCode ProcessCode TestResult ResultDesc OperTime Operator
A0001 L1 A True NULL 2012/03/14 09:39:23 L1A
A0001 L1 B False BAD 2012/03/14 09:45:12 L1B
A0001 L1 A True NULL 2012/03/14 09:50:20 L1A
A0001 L1 B True NULL 2012/03/14 09:57:30 L1B
A0001 L1 C True NULL 2012/03/14 10:01:20 L1C
A0001 L1 D True NULL 2012/03/14 10:07:22 L1D
A0001 L1 E True NULL 2012/03/14 11:15:29 L1E
A0002 L1 A True NULL 2012/03/14 09:39:23 L1A
A0002 L1 B False BAD 2012/03/14 09:45:12 L1B
A0002 L1 A True NULL 2012/03/14 09:50:20 L1A
A0002 L1 B True NULL 2012/03/14 09:57:30 L1B
A0002 L1 C True NULL 2012/03/14 10:01:20 L1C
A0002 L1 D True NULL 2012/03/14 10:07:22 L1D
A0002 L1 E True NULL 2012/03/14 11:15:29 L1E
怎么样做能查询出这样的结果,也就是当TestResult为False的时候去除当前为False的这一行以及OperTime小于当前行的结果记录
PCBCode LineCode ProcessCode TestResult ResultDesc OperTime Operator
A0001 L1 A True NULL 2012/03/14 09:50:20 L1A
A0001 L1 B True NULL 2012/03/14 09:57:30 L1B
A0001 L1 C True NULL 2012/03/14 10:01:20 L1C
A0001 L1 D True NULL 2012/03/14 10:07:22 L1D
A0001 L1 E True NULL 2012/03/14 11:15:29 L1E
A0002 L1 A True NULL 2012/03/14 09:50:20 L1A
A0002 L1 B True NULL 2012/03/14 09:57:30 L1B
A0002 L1 C True NULL 2012/03/14 10:01:20 L1C
A0002 L1 D True NULL 2012/03/14 10:07:22 L1D
A0002 L1 E True NULL 2012/03/14 11:15:29 L1E






------解决方案--------------------
case when
------解决方案--------------------
帖子被吃了么

SQL code
select 表.PCBCode,表.LineCode,表.ProcessCode,表.TestResult,        表.ResultDesc,表.OperTime,表.Operatorfrom 表,(select pcbcode,max(OperTime) OperTime_max from 表    where TestResult = 'False') 表_false    where 表.pcbcode = 表_false.pcbcode    and 表.OperTime > 表_false.OperTime_max
  相关解决方案