sql查询人工创建行

时间:2011-06-21 15:18:24

标签: sql

我有一段代码可以在各种数据库上运行。它只是运行一个可配置的SQL查询,它返回许多行。从每一行,我拉一些文本和一个数字来创建一个新对象。我们最新的客户决定将所有文本编号组合放在数据库的一行中,即

 text_1, num_1, text_2, num_2, text_3, num_3

我是否有一种聪明的方法可以查询此内容

 text_1,num_1
 text_2,num_2
 text_3,num_3

这样我就不必重新编写此客户端的部分。

编辑: (不同的数据库意味着不同的RDBMS) (逗号分隔表中的不同列)

2 个答案:

答案 0 :(得分:5)

SELECT
  CASE row.id WHEN 1 THEN field1
              WHEN 2 THEN field3
                     ELSE field5
  END                                        AS new_field_1,
  CASE row.id WHEN 1 THEN field2
              WHEN 2 THEN field4
                     ELSE field6
  END                                        AS new_field_2
FROM
  myTable
CROSS JOIN
  (SELECT 1 AS id UNION ALL SELECT 2 UNION ALL SELECT 3) AS row

这应该适用于大多数人,但仍需要稍加修改(例如在UNIONs for Oracle中添加'FROM dual'...)

或者,只需UNION三个查询......

SELECT field1, field2 FROM myTable
UNION ALL
SELECT field3, field4 FROM myTable
UNION ALL
SELECT field5, field6 FROM myTable

答案 1 :(得分:1)

您可以创建一个函数/ SP,以您需要的方式返回ResultSet。