sql - 将连接的行变成列
问题描述
SELECT
b_Name+' | '+Entity+' | '+cast(A_Date as varchar) as [top] -- Colum
,b_Name -- Rows
,[Task_Category] -- Rows
,[Fcn_Name] -- Rows
,[Task] -- Rows
,[Task_ID] -- Rows
,[Owner] -- Rows
,[RAG_Status] -- Rows
FROM [Task]
我正在尝试将连接的 [TOP] 制作成列标题,但将其余部分保留在行中。我还在学习 SQL,所以请给我申请专利。哈哈
SELECT *
FROM
(
SELECT
b_Name+' | '+Entity+' | '+cast(A_Date as varchar) as [top] -- Colum
,b_Name -- Rows
,[Task_Category] -- Rows
,[Fcn_Name] -- Rows
,[Task] -- Rows
,[Task_ID] -- Rows
,[Owner] -- Rows
,[RAG_Status] -- Rows
FROM [IntegrationDBdev].[dbo].[Task_Acquisition]
) AS SourceTable PIVOT(AVG(task) FOR ????
IN(
??????
) ) AS PivotTable;
我已经尝试了上述方法,但不确定在枢轴上放什么
解决方案
我不建议在 Pivot 中使用 top 作为串联,因为在“IN”条件下,您也必须进行串联。
但是对于您的代码,您可以拥有它
CREATE TABLE Grades(
[Student] VARCHAR(50),
[Subject] VARCHAR(50),
[Marks] INT
)
GO
INSERT INTO Grades VALUES
('Jacob','Mathematics',100),
('Jacob','Science',95),
('Jacob','Geography',90),
('Amilee','Mathematics',90),
('Amilee','Science',90),
('Amilee','Geography',100)
GO
SELECT * FROM (
SELECT
[Student],
[Subject]+'|'+[Student] as [Test1],
[Marks]
FROM Grades
) StudentResults
PIVOT (
SUM([Marks])
FOR [Test1]
IN (
[Mathematics|Amilee],
[Science|Amilee],
[Geography|Amilee],
[Mathematics|Jacob],
[Science|Jacob],
[Geography|Jacob]
)
) AS PivotTable
我会建议它像
SELECT * FROM (
SELECT
[Student],
[Subject],
[Marks]
FROM Grades
) StudentResults
PIVOT (
SUM([Marks])
FOR [Subject]
IN (
[Mathematics],
[Science],
[Geography]
)
) AS PivotTable
这将给出结果
让我知道是否需要更多澄清。
推荐阅读
- typescript - 打字稿:来自对象的新实例
- python - 如何使用 python 和 python-docx 在页眉/页脚中添加表格
- r - 为什么 tidyverse 在将数据读入 tibble 时将所有列显示为 col_double()?
- python-3.x - 在另一个字符串中查找子字符串的出现次数
- c# - Asp.net URL 路由到第三方链接
- c# - 如何将私有字段添加到json
- angular - 如何以角度显示具有不同模板的异构列表?
- angular - 从 Angular 7 配置注入 API_BASE_URL
- php - 如何使用 TCPDF 库在 PDF 上添加自定义字体(Myriad Pro)
- angular - 角度单元测试错误 - 无法读取未定义的属性“订阅”