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;