如何在SQL Server中编写多集SELECT查询

时间:2018-05-16 03:13:07

标签: sql sql-server oracle

请考虑以下表格:

T_WORK

-------------------
| Work_id | Cre_d |
-------------------
|    1    | 2016  |
|    2    | 2017  |
|    3    | 2018  |
-------------------

T_WORK_PARAM

-----------------------------------
| Work_id | Param_nm | Param_val  |
-----------------------------------
|    1    |    Name  | John       |
|    1    |    Place | London     |
|    1    |    Date  | 01-01-2018 |
|    2    |    Name  | Trump      |
|    2    |    Place | Newyork    |
|    2    |    Date  | 02-02-2018 |
-----------------------------------

我需要以下格式的输出

-----------------------------------
|         |    Name  | John       |
|    1    |    Place | London     |
|         |    Date  | 01-01-2018 |
-----------------------------------
|         |    Name  | Trump      |
|    2    |    Place | Newyork    |
|         |    Date  | 02-02-2018 |
-----------------------------------

在Oracle中,我可以通过此查询实现此目的:

SELECT 
    T1.Work_id,
    CAST (MULTISET (SELECT Param_nm, Param_val
                    FROM T_work_param T2
                    WHERE T2.Work_id = T1.Work_id) AS type_param_tbl)
FROM 
    T_work T1

type_param_tbl is table of (Param_nm varhar2(1000), PAram_val varhar2(1000));

如何在SQL Server中编写类似的查询?

如果在SQL Server中无法实现 - 将所需输出返回给调用者(Web服务)的最佳/常用方法是什么?

2 个答案:

答案 0 :(得分:1)

实现结果的方式实际上是通过转动Param_nm列。这会将结果生成为表格格式,您可以将其解析/映射到应用程序中。

请点击here查看显示我正在谈论的内容的SQLFiddle。

我希望这可以帮到你!

答案 1 :(得分:0)

不幸的是,您无法在SQL Server中执行此操作。

您可以考虑加入表格以获得类似的结果。