我正在尝试将以下 Access Crosstab 查询转换为在 SQL Server 2008(不支持 Transform & Pivot)中工作。任何帮助将不胜感激。
TRANSFORM Last(dbo_TBL_DM_TEST_RESULTS_Flex.FAIL_CODE) AS LastOfFAIL_CODE1
SELECT dbo_TBL_DM_TEST_RESULTS_Flex.SERIAL_ID
FROM dbo_TBL_DM_TEST_RESULTS_Flex
WHERE (((dbo_TBL_DM_TEST_RESULTS_Flex.TEST_DATE)>#7/1/2013 0:0:1#) AND ((dbo_TBL_DM_TEST_RESULTS_Flex.TEST_RESULT)="fail"))
GROUP BY dbo_TBL_DM_TEST_RESULTS_Flex.SERIAL_ID
PIVOT dbo_TBL_DM_TEST_RESULTS_Flex.TEST_AREA In ("Test_1","Test_2","Test_3","Test_4","Test_5","Test_6");
谢谢。
如果多次运行测试,我可以根据最大日期为每个(test_1,Test_2...ect)提取最后一个 Fail_code 结果吗?我有一个名为 TEST_DATE 的字段,我想提取每个测试的最后一条记录。如果测试通过或未运行,则字段 FAIL_CODE 将为 NULL。这是我想要进行透视的原始数据。
TEST_AREA TEST_DATE SERIAL_ID TEST_RESULT FAIL_CODE
Test_1 8/14/2013 11:29:24 AM 12398701 PASS NULL
Test_2 8/17/2013 08:49:35 AM 12398701 PASS NULL
Test_3 8/17/2013 10:13:41 PM 12398701 FAIL Pwr_up
Test_3 8/17/2013 10:15:38 PM 12398701 PASS NULL
Test_4 8/17/2013 10:23:22 PM 12398701 FAIL Pwr_up
Test_4 8/17/2013 10:24:22 PM 12398701 PASS NULL
Test_5 8/18/2013 07:34:34 AM 12398701 FAIL Memory_1
这是我运行用户 bluefeet 提供的 SQL 时的当前结果。
SERIAL_ID Test_1 Test_2 Test_3 Test_4 Test_5 Test_6
12398701 NULL NULL Pwr_up Pwr_up Memory_1 NULL
正如您在原始数据中看到的那样——Test_3 和 Test_4 运行了两次。第二次运行 Test_3 和 Test_4 他们通过了,所以我不想报告第一次失败。这是我想要的输出。
SERIAL_ID Test_1 Test_2 Test_3 Test_4 Test_5 Test_6
12398701 NULL NULL NULL NULL Memory_1 NULL