Sql 基于同一id从多个表中选择数据和字段名
我曾试图为我的“问题”找到最佳解决方案,但我的SQL知识有限,因此我请求您的帮助 我目前有一个名为Project的“main”表,它的主键(projectd)用于其他表,如“Description”(见下文) 我正在尝试编写一个存储过程,根据“ProjectId”选择多个表的字段名的所有数据,然后输出结果将是:Sql 基于同一id从多个表中选择数据和字段名,sql,sql-server,pivot,Sql,Sql Server,Pivot,我曾试图为我的“问题”找到最佳解决方案,但我的SQL知识有限,因此我请求您的帮助 我目前有一个名为Project的“main”表,它的主键(projectd)用于其他表,如“Description”(见下文) 我正在尝试编写一个存储过程,根据“ProjectId”选择多个表的字段名的所有数据,然后输出结果将是: Sotred Procedure Result with parameter @ProjectId = 1 : +-----------+----------+ | FieldName
Sotred Procedure Result with parameter @ProjectId = 1 :
+-----------+----------+
| FieldName | Value |
+-----------+----------+
| P_Field1 | val1 |
+-----------+----------+
| P_Field2 | val2 |
+-----------+----------+
| D_Field1 | valA |
+-----------+----------+
| D_Field2 | valB |
+-----------+----------+
一位朋友告诉我,SQL“PIVOT”函数可以帮助我,但我从来没有使用过这个函数,我对它的搜索也没有帮助,因为它经常与“SUM”、“MAX”等一起使用,我不需要它
提前感谢。您想要的是,而不是pivot
,以及一个union
select fieldname, value from [project]
unpivot (value for fieldname in ([p_field1],[p_field2])) p
where projectid=1
union all
select fieldname, value from [descriptive]
unpivot (value for fieldname in ([d_field1],[d_field2])) p
where projectid=1
这正是我需要的。非常感谢卢斯卡!
select fieldname, value from [project]
unpivot (value for fieldname in ([p_field1],[p_field2])) p
where projectid=1
union all
select fieldname, value from [descriptive]
unpivot (value for fieldname in ([d_field1],[d_field2])) p
where projectid=1