【发布时间】:2015-02-25 22:31:52
【问题描述】:
我有这张桌子:
TABLE_A
ID | ATTR_NAME | ATTR_ID | START_DATE
-------------------------------------
1 | XPTA | 12 | 01-10-2013
1 | XPTO | 167 | 01-10-2013
1 | XPTA | 13 | 04-12-2013
2 | XPTA | 12 | 03-09-2015
2 | XPTO | 6 | 05-08-2012
TABLE_B (just to help understand)
ATTR_NAME | ATTR_ID | DESCRIPTION
---------------------------------
XPTA | 12 | ASM5
XPTO | 167 | weird attr
XPTA | 13 | DBSO12
XPTO | 6 | gosh...
有没有办法让选择返回这个?
ID | XPTA | XPTO | START_DATE
-----------------------------
1 | 12 | 167 | 01-10-2013
1 | 13 | | 04-12-2013
2 | 12 | | 03-09-2015
2 | | 6 | 05-08-2012
基本上,COL1 表示一个属性,COL2 表示与从 START_DATE 开始的 ID 关联的 COL1 的 id 值 示例:资源 Mike (ID) 从 2013 年 1 月 10 日(START_DATE)开始具有 ASM5 (COL2) 的成本配置文件 (COL1)
想法是按日期对每个 ID 的属性进行分组。
我认为我能做到的唯一方法是首先执行 选择不同于 TABLE_A 的 start_date,然后为获取的每个日期执行一个 select ID、COL1、COL2、:date_start from TABLE_A其中 START_DATE = :date_start 然后以某种方式使 COL1 值我的列和 COL2 值我的值。
【问题讨论】:
-
我假设所需结果的最后一行中的 6 应该在第三列,而不是第二列。
-
你完全正确。我很抱歉这个错误。已更正。