日期:2014-05-18  浏览次数:20623 次

SQL 多表连接 动态列 查询
SQL code
三张表如下:
CREATE TABLE [dbo].[YM_Column](
    [YM_Column_ID] [int] IDENTITY(1,1) NOT NULL,
    [YM_Column_Name] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
    [YM_Column_Date] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL
) 


CREATE TABLE [dbo].[YM_Row](
    [YM_Row_ID] [int] IDENTITY(1,1) NOT NULL,
    [YM_Row_Name] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
    [YM_Row_PID] [int] NULL
) 

CREATE TABLE [dbo].[YM_Test](
    [YM_Test_ID] [int] IDENTITY(1,1) NOT NULL,
    [YM_Row_ID] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
    [YM_Column_ID] [int] NULL,
    [YM_Test_Value1] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
    [YM_Test_Value2] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL
)

数据如下:
[dbo].[YM_Column]

YM_Column_ID YM_Column_Name                                     YM_Column_Date
------------ -------------------------------------------------- ------------------------
1            第一期                                                1月~3月
2            第二期                                                4月~6月
3            第三期                                                7月~9月
4            第四期                                                10月~12月

===============================================================================
[dbo].[YM_Row]

YM_Row_ID   YM_Row_Name                                        YM_Row_PID
----------- -------------------------------------------------- -----------
1           人工费                                                0
2           高级人员                                               1
3           初级人员                                               1
4           其他费用                                               0
5           差旅费                                                4
6           住宿费                                                5
7           餐补                                                 5
8           车辆费                                                4
9           修理费                                                8
10          燃油费                                                8

===============================================================================
[dbo].[YM_Test]

YM_Test_ID  YM_Row_ID       YM_Column_ID YM_Test_Value1  YM_Test_Value2
----------- --------------- ------------ --------------- -----------------
1           2               1            300             280
2           3               1            200             NULL
3           2               2            320             NULL
4           6               1            180             NULL
5           7               1            60              NULL
6           9               1            120             NULL
7           10              1            160             NULL


以上是数据和表结构,想要的结果如下:


------解决方案--------------------
友情up,等高手帮你处理一下吧。
------解决方案--------------------

------解决方案--------------------
帮顶!
------解决方案--------------------
过于高深,等高手帮你处理一下吧。
------解决方案--------------------
OH!My God!