-3

次の Access Crosstab クエリを SQL Server 2008 で動作するように変換しようとしています (これは変換とピボットをサポートしていません)。どんな助けでも大歓迎です。

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 は 2 回実行されました。2 回目に 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
4

1 に答える 1