sql - 在 1 行中创建相同列的数据透视
问题描述
我使用的是 SQL Server,我有一个返回所有字段数据的查询,主要是 1 个字段可以属于多个记录,记录 ID 区分它们。
我有一个这样的数据集。
我目前的查询:
Select fd.FieldName ,FV.FieldID, Data , R.RecordID from FieldValues FV
Inner Join Records R on R.RecordID = FV.RecordID
Inner Join Forms F On f.FormID = R.FormID
Inner join Fields fd on fd.FieldID = fv.FieldID
Where R.RecordID IN (45,46)
我需要像这样创建属于同一 RecordID 的每一列的 1 行。
Service Name Location city VendorCode RecordID
Raj ABC LOCATION ABC CITY 32 45
BEN ABC LOCATION ABC CITY -- 46
以上是我想要的输出。
我已经尝试过枢轴但没有成功。
解决方案
这是带有枢轴的解决方案,但缺少包含调整连接
declare @columns varchar(max) set @columns = ''
select @columns = coalesce(@columns + '[' + cast(col as varchar(MAX)) + '],', '')
FROM ( select FieldName as col from FieldValues group by FieldName ) m
set @columns = left(@columns,LEN(@columns)-1)
DECLARE @SQLString nvarchar(max);
set @SQLString = '
select * from
( select RecordId, FieldName, Data from FieldValues) m
PIVOT
( MAX(Data)
FOR FieldName in (' + @columns + ')
) AS PVT'
EXECUTE sp_executesql @SQLString
推荐阅读
- facebook - Facebook API 不返回评论、作者姓名和图片的字段“FROM”
- r - 在匹配多个条件时更改 R 数据框的 colname
- javascript - 我的页面不会自动刷新 - laravel
- ios - lineChartView 轴标签在标签上添加额外的线
- python - 如何使用 BeautifulSoup 抓取网站中的每个页面
- python - 按条件对 Numpy 数组进行有效分区
- reactjs - 当站点更改语言时,recaptcha 不会更新其语言显示
- c++ - 即使在初始化之后,ncurses 也不做任何事情
- python - 即使不满足“if”条件也不出现else函数
- python - 使用python将原始字符串数据转换为json数据