Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
格式化行到列sql查询的输出_Sql_Sql Server - Fatal编程技术网

格式化行到列sql查询的输出

格式化行到列sql查询的输出,sql,sql-server,Sql,Sql Server,我有以下基于[Test Parameter Name]的表格(行)格式的数据 [Serial Number] [Model] [Recv_Date] [Test Date] [Test Parameter Name] [Test Value] [Test Result] [Tester Name_ID] [Error_Defect Code] 100811000023 M9001 3/20/13 14:18 3/22/13 0:42 Test_1

我有以下基于[Test Parameter Name]的表格(行)格式的数据

[Serial Number] [Model]  [Recv_Date]      [Test Date]    [Test Parameter Name]  [Test Value]  [Test Result]  [Tester Name_ID]   [Error_Defect Code]
100811000023     M9001   3/20/13 14:18    3/22/13 0:42   Test_1                 0             FAIL           dev04_9            DC01
100811000023     M9001   3/20/13 14:18    3/22/13 0:42   Test_2                 100           PASS           dev04_9            DC01
100811000023     M9001   3/20/13 14:18    3/22/13 0:42   Test_3                 0             FAIL           dev04_9            DC02
100811000023     M9001   3/20/13 14:18    3/22/13 0:42   Test_4                 NULL          SKIPPED        dev04_9            DC02
100811000023     M9001   3/20/13 14:18    3/22/13 0:42   Test_5                 120           PASS           dev04_9            DC03
100899000345     M9001   3/20/13 23:28    3/21/13 15:55  Test_1                 99            PASS           dev09_5            DC01
100899000345     M9001   3/20/13 23:28    3/21/13 15:55  Test_2                 101           PASS           dev09_5            DC01
100899000345     M9001   3/20/13 23:28    3/21/13 15:55  Test_3                 103           PASS           dev09_5            DC02
100899000345     M9001   3/20/13 23:28    3/21/13 15:55  Test_4                 100           PASS           dev09_5            DC02
100899000345     M9001   3/20/13 23:28    3/21/13 15:55  Test_5                 119           PASS           dev09_5            DC03
100811000023     M9001   3/20/13 14:18    3/23/13 13:15  Test_1                 0             FAIL           dev04_9            DC01
100811000023     M9001   3/20/13 14:18    3/23/13 13:15  Test_2                 100           PASS           dev04_9            DC01
100811000023     M9001   3/20/13 14:18    3/23/13 13:15  Test_3                 0             FAIL           dev04_9            DC02
100811000023     M9001   3/20/13 14:18    3/23/13 13:15  Test_4                 NULL          SKIPPED        dev04_9            DC02
100811000023     M9001   3/20/13 14:18    3/23/13 13:15  Test_5                 120           PASS           dev04_9            DC03
我需要的输出是一个单一的记录,由[Serial Number]基于max[Test Date](一个单元可以运行多次)。然后我需要查看所有[Test Parameter Name]的测试结果,看看它们是通过还是失败。如果出现多个故障,我需要按优先级显示[Error_Defect Code]。注:多个测试被分组为一个[Error_Defect Code],在示例数据中,任何失败测试的报告优先级为:[Error_Defect Code]=“DC03”,然后是“DC02”、“DC01”。。。。如果所有测试均通过,则显示[错误\缺陷代码]的“DC00”。我还想将[Test Parameter Name]旋转以显示[Test Value]

数据示例仅显示5个不同的[Test Parameter Name]值。实际上,我的实际数据有100个不同的[Test Parameter Name]值和15个不同的[Error_Defect Code]

HEARD是我希望输出的外观:

[Serial Number] [Model]  [Recv_Date]    [Test Date]   [Test Result] [Error_Defect Code] [Tester Name_ID]  [Test_1] [Test_2] [Test_3] [Test_4] [Test_5]...
100811000023    M9001    3/20/13 14:18  3/23/13 13:15 FAIL          DC02                dev04_9            0       100      0        NULL     120
100899000345    M9001    3/20/13 23:28  3/21/13 15:55 PASS          DC00                dev09_5            99      101      103      100      119

你试过PIVOT操作符了吗?如果是,你已经走了多远?您必须将PIVOT的结果与实现Test\u result和Error\u Defect\u代码逻辑的查询的结果连接起来。如果您可以有无限数量的测试参数名称,那么您将无法使用SQL查询解决问题,并且需要T-SQL程序。我正在尝试使用T-SQL编程。。。我曾尝试使用PIVOT操作符,但我一直在尝试获取所有字段以生成所需的输出。这将花费比我更多的时间。但基本上如果是我,我会考虑用CTE创建一个基集,用MAX(测试日期)对必要的值进行分组,用CASE语句处理错误代码。然后,我将为数据透视列构建一个字符串,并将两者结合起来创建结果。有关类似的场景,请参见此处: