我对SQL有点生疏,我有一个简单的表
col1 col2 col3 col4
ident1 name1 data1 data3
ident2 name1 data8 data7
ident3 name1 data3 data8
...
ident1 name2 data4 data1
ident2 name2 data2 data5
ident3 name2 data6 data3
...
我希望以这种方式获得几列
ident1 ident1 ident2 ident2 ident3 ident3 ...
name1 data1 data3 data8 data7 ...
name2 data4 data1 data2 data5 ...
name3 ....
...
请注意,这与MySQL: Returning multiple columns from an in-line subquery不同,因为我只有一个表,我想将第一列映射为结果中的第一行。
我已经读过这可以使用像SELECT ... WHERE(col3,col4)IN(SELECT col3,col4 ...)这样的子查询,但是我在'IN / ALL /'中遇到了像未知列col3这样的错误任何子查询'我无法弄清楚如何在结果的第一行中获取列名,以及如何使用group by来添加列。有什么帮助吗?
答案 0 :(得分:1)
看起来像mdx。那些很棒。但这不是那些。但它们的存在是因为SQL
(在所有类型中)只是坏。 (这也可能是您需要重新考虑架构的情况。)
个人?我会将其作为一系列查询和关联数组(伪代码跟随)。
select col1 from table -> iterate through result adding two copies of each to
keys of an associative array
select col1, col2, col3, col4 from table -> output name. while name = first
name output col3 then col4
你的另一个选择,我可以说,实际上应该在动态sql中完成(使用PREPARE
语句等)。