我有,看起來像下面的示例數據表中的數據:創建T-SQL摘要行
varchar(20) | DateTime | varchar(20) |varchar(255)
_Serial_Number__|_Date_Time______________|_System_ID___|_Test_Result________________
C035993 0703 05 |2005-08-18 13:43:33.717 |VTI-Chamber1 | (BLUE) TEST ABORTED, LEAKFP SPUN DOWN
C035993 0702 05 |2005-08-18 13:51:52.640 |VTI-Chamber1 | FAIL: Squirt Test.
C035993 0704 05 |2005-08-18 14:18:13.607 |VTI-Chamber1 | TEST ABORTED
C035993 0705 05 |2005-08-18 14:30:43.717 |VTI-Chamber1 | B=FAIL, Final N2 Fill after Settle, W=PASS,
C035993 0707 05 |2005-08-18 14:41:59.310 |VTI-Chamber1 | FAIL: Fine Test.
C035878 0775 05 |2005-08-18 15:38:25.810 |VTI-Chamber1 | Chamber Calibration Factor Too High
C035878 0774 05 |2005-08-18 15:43:23.000 |VTI-Chamber1 | FAIL Pressure Decay Test
C035993 0674 05 |2005-08-18 15:51:49.467 |VTI-Chamber1 | FAIL: Squirt Test.
BLANKTEST |2005-08-18 15:58:40.793 |VTI-Chamber3 | Pass.
C035993 0706 05 |2005-08-18 15:59:03.200 |VTI-Chamber1 | Pass.
我需要創建幾個腳本通過所有的記錄對於給定的序列號,並確定如果它通過或失敗。每個零件通常有多個條目。
一個測試需要確定部件的狀態,或者最後一個測試結果是PASS還是FAIL,忽略諸如'TEST ABORTED'或'Chamber Calibration Factor Too High'之類的數據。
第二個測試需要確定零件的質量,我們使用的標準是檢查零件是否在第一個測試中通過,再次忽略錯誤的數據,如'TEST ABORTED'或'Chamber校準因子太高「。
我覺得我需要創建一些選擇不同序列號的東西,然後編寫一個迭代數據的while循環。
我有一些工作,但我目前沒有辦法讓我返回的數據按Date_Time字段排序。
如果我能弄清那部分,我應該設置。
有人可以告訴我,我可以做些什麼來允許我的腳本過濾Date_Time字段?
declare @result varChar(10), @serialNum varChar(20), @testResult varChar(255)
declare snList cursor for
select distinct TR.Serial_Number
from Test_Results TR
left join ACP_Parts AP on (TR.Serial_Number=AP.Serial_Number)
where (AP.Serial_Number is not null)
open snList
fetch next from snList into @serialNum
while (@@fetch_status=0) begin
set @result=''
declare resultList Cursor for
select Test_Result
from Test_Results
where ([email protected]) and (System_ID Like '%Chamb%')
open resultList
fetch next from resultList into @testResult
while (@@fetch_status=0) and (@result<>'PASS') begin
set @result=case
when (0<CharIndex('fail', @testResult)) then 'FAIL'
when (0<CharIndex('pass', @testResult)) then 'PASS'
else ''
end
end
close resultList
select @serialNum as 'Serial_Number', @result as 'Test_Result'
fetch next from snList into @serialNum
end
close snList
文件結束。
向我們展示樣品輸出請... – gbn 2010-07-14 16:43:29
YIKES!遊標.......甚至沒有定義爲FAST_FORWARD ...... – 2010-07-14 16:47:00
你也沒有命令你的內部遊標,這意味着如果有兩個結果,那麼輸出是未定義的 - 它可能是通過或它可能會失敗。確認!我也注意到,如果有一個結果是你不關心的,它可以將結果設置爲「'而不管訂購。 – 2010-07-14 17:15:15