2

我对 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 不同:从内联子查询中返回多个列,因为我只有一个表,并且我想将第一列映射为结果中的第一行。

我已经读过像 SELECT ... WHERE (col3,col4) IN (SELECT col3, col4 ...) 这样的子查询可以做到这一点,但是我遇到了类似“IN/ALL/ANY 子查询”中的未知列 col3 的错误而且我不知道如何在结果的第一行中获取列名以及如何使用 group by 添加列。有什么帮助吗?

4

1 回答 1

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语句等)。

于 2011-08-11T19:59:20.023 回答