Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.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 MSAccess中的枢轴变换_Sql_Database_Ms Access - Fatal编程技术网

Sql MSAccess中的枢轴变换

Sql MSAccess中的枢轴变换,sql,database,ms-access,Sql,Database,Ms Access,在MSAccess中,我有一个带有列的表 1 Col1, Col2, Col3, Col4. 我希望使用SQL查询(最好使用PIVOT转换)将此列设置为行,如下所示。感谢您的帮助 1 Col1, 2 Col2 3 Col3 4 Col4 您需要使用UNION或UNION ALL查询: Select 1, Col1 From MyTable Union All Select 2, Col2 From MyTable Union All Select 3, Col3 From MyTabl

在MSAccess中,我有一个带有列的表

1 Col1, Col2, Col3, Col4. 
我希望使用SQL查询(最好使用PIVOT转换)将此列设置为行,如下所示。感谢您的帮助

1 Col1,
2 Col2
3 Col3
4 Col4  

您需要使用UNION或UNION ALL查询:

Select 1, Col1 From MyTable
Union All
Select 2, Col2 From MyTable
Union All
Select 3, Col3 From MyTable
Union All
Select 4, Col4 From MyTable

Union All将从每个表返回行,即使它创建了重复的行。Union将有效地将结果分组在一起,这样您就可以以性能为代价创建唯一的行。

谢谢,Thomas。如果我使用Union,是否存在性能问题?你知道在这种情况下应用数据透视吗?@Vin-取决于数据量。对于大多数系统来说,性能差异不会很大,但是如果表非常大,因此您要将大量数据合并在一起,那么性能差异可能会有所不同。真正的问题是,你需要的是不需要复制品,以及复制品是否可能。如果这是真的,那么使用Union是正确的答案。对于重复项,Union都包括它们,Union将删除它们,并将花费更多的时间返回结果。一般来说,对于性能问题,如果您所做的只是在表单或报表中返回结果,那么实际上并没有。但是,如果您想要将WHERE子句应用于聚合集,那么就会遇到性能瓶颈,因为无法使用索引。在这种情况下,最好使用WHERE子句,该子句使用OR检查所有四个字段。