Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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 基于同一id从多个表中选择数据和字段名_Sql_Sql Server_Pivot - Fatal编程技术网

Sql 基于同一id从多个表中选择数据和字段名

Sql 基于同一id从多个表中选择数据和字段名,sql,sql-server,pivot,Sql,Sql Server,Pivot,我曾试图为我的“问题”找到最佳解决方案,但我的SQL知识有限,因此我请求您的帮助 我目前有一个名为Project的“main”表,它的主键(projectd)用于其他表,如“Description”(见下文) 我正在尝试编写一个存储过程,根据“ProjectId”选择多个表的字段名的所有数据,然后输出结果将是: Sotred Procedure Result with parameter @ProjectId = 1 : +-----------+----------+ | FieldName

我曾试图为我的“问题”找到最佳解决方案,但我的SQL知识有限,因此我请求您的帮助

我目前有一个名为Project的“main”表,它的主键(projectd)用于其他表,如“Description”(见下文)

我正在尝试编写一个存储过程,根据“ProjectId”选择多个表的字段名的所有数据,然后输出结果将是:

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