2
我可以使用Oracle中的PIVOT关键字通过使用单个查询而不是两个查询来创建多行的多个列,如下所示。 例如..Oracle中的枢轴关键字
1)
SELECT
*
FROM
(
SELECT elig.person_id,elig.cmpo_key, recm.pyin_amt FROM sp_cmpo_elig elig, sp_base_pay_recm recm
WHERE elig.cmpo_elig_key=recm.cmpo_elig_key AND elig.person_id='807114') temp
pivot (Max(temp.pyin_amt) FOR (cmpo_key) IN (1 AS pyin_amt_1, 2 AS pyin_amt_2, 3 AS pyin_amt_3, 4 AS pyin_amt_4))
如果使用此查询,我正在像下面的输出..
PERSON_ID PYIN_AMT_1 PYIN_AMT_2 PYIN_AMT_3 PYIN_AMT_4
807114 1524.23 235.25 235.25 235.25
2)
SELECT
*
FROM
(
SELECT elig.person_id,elig.cmpo_key, recm.pyin_pct FROM sp_cmpo_elig elig, sp_base_pay_recm recm
WHERE elig.cmpo_elig_key=recm.cmpo_elig_key AND elig.person_id='807114') temp
pivot (Max(temp.pyin_pct) FOR (cmpo_key) IN (1 AS pyin_pct_1, 2 AS pyin_pct_2, 3 AS pyin_pct_3, 4 AS pyin_pct_4))
输出:
PERSON_ID PYIN_PCT_1 PYIN_PCT_2 PYIN_PCT_3 PYIN_PCT_4
807114 2 5 5 3
我可以如上创建单个查询而不是两个查询。请为此提供解决方案。
注:本人与工会也试过,如果我使用union它会给两个记录像下面...
PERSON_ID PYIN_AMT_1 PYIN_AMT_2 PYIN_AMT_3 PYIN_AMT_4
807114 1524.23 235.25 235.25 235.25
807114 2 5 5 3
我期望的输出上面不喜欢的,我期待像下面....
PERSON_ID PYIN_AMT_1 PYIN_AMT_2 PYIN_AMT_3 PYIN_AMT_4 PYIN_PCT_1 PYIN_PCT_2 PYIN_PCT_3 PYIN_PCT_4
807114 1524.23 235.25 235.25 235.25 2 5 5 3
嗨,我尝试像什么已给,但它会返回两个记录。但我需要该员工的单一记录,像下面的8列...... – 2011-12-16 09:13:01