Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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_Tsql - Fatal编程技术网

Sql 如何将表列显示为行

Sql 如何将表列显示为行,sql,sql-server,tsql,Sql,Sql Server,Tsql,当前表格: Questions Response Sol 25 A Sol25B Sol25C Sol40A Sol40B =========================================================== A 0 0 1 4 10 3 B 1 4 0 5 56 1 C 0

当前表格:

Questions  Response  Sol 25 A  Sol25B Sol25C Sol40A Sol40B
===========================================================
A           0          0        1       4     10      3
B           1          4        0       5     56      1
C           0          5        1       4     4       2
我需要使用Where条件
Question=x和Response=Y得到如下预期结果

预期产出为:

Product   Col1  Col2   Col3   Total
===================================   
Sol25A    0      4      5      9
Sol25B    1      0      1      2
Sol25C    4      5      4      13
Sol40A    10     56     4      70
Sol40B    3      2      1      6

您可以为我提供有关此的SQL查询吗。

您可以在SQL Server中使用Pivot和UnPivot。 您可以在以下链接中找到更多信息: 拜访


因此,它不是一个代码编写服务。请显示您的尝试请,显示您当前的代码:您尝试了什么,出现了什么问题?输出是否总是有5个预期行,或者是否会有更多/更少的行?您说
我需要使用Where条件Question=x和Response=Y的预期结果如下
,但是显示的预期输出似乎不是针对某个特定的问题和回答。谢谢,这是根据我的要求工作的。
SELECT 'AverageCost' AS Cost_Sorted_By_Production_Days,   
[0], [1], [2], [3], [4]  
FROM  
(SELECT DaysToManufacture, StandardCost   
    FROM Production.Product) AS SourceTable  
PIVOT  
(  
AVG(StandardCost)  
FOR DaysToManufacture IN ([0], [1], [2], [3], [4])  
) AS PivotTable;  
SELECT product, col1, col2, col3, col1+col2+col3 AS total
FROM (
    SELECT product,
        SUM(CASE WHEN questions='A' THEN val END) AS col1,
        SUM(CASE WHEN questions='B' THEN val END) AS col2,
        SUM(CASE WHEN questions='C' THEN val END) AS col3
    FROM (
        SELECT *
        FROM exp
        UNPIVOT (
            val FOR product IN (sol25a, sol25b, sol25c, sol40a, sol40b)
        ) AS unp
    ) s
    GROUP BY product
) b;