日期:2014-05-18  浏览次数:20423 次

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,表.Operator
from 表,
(select pcbcode,max(OperTime) OperTime_max from 表
    where TestResult = 'False') 表_false
    where 表.pcbcode = 表_false.pcbcode
    and 表.OperTime > 表_false.OperTime_max