在oracle中遍历单元格值

时间:2015-11-18 14:33:25

标签: oracle

我有一个表格,其中数据的格式如下:

CREATE TABLE TBL_COUNTING ( 
 DF_RECORD_STATUS NVARCHAR2(255), 
 SOURCE_FILE_NAME NVARCHAR2(255), 
 APP_HCP360_COUNT NUMBER, 
 STAGING_COUNT NUMBER, 
 SUPERCEEDED NUMBER );


SUPERCEEDED upload_trxn2015831_3039.csv      0                            2

TOTAL       upload_trxn2015831_3039.csv      2            2               0

我想以下面的格式格式化上面的内容。但我无法这样做。

DF_RECORD_STATUS SOURCE_FILE_NAME            APP_HCP360_COUNT   STAGING_COUNT   SUPERCEEDED
SUPERCEEDED      upload_trxn2015831_3039.csv         2                            0
TOTAL            upload_trxn2015831_3039.csv         0            2               2

到目前为止,我能够做到以下几点:

SELECT 
DF_RECORD_STATUS,
SOURCE_FILE_NAME,
STAGING_COUNT,
CASE WHEN DF_RECORD_STATUS = 'NEW'
THEN
APP_HCP360_COUNT
ELSE
0
END AS APP_HCP360_COUNT,
SUPERCEEDED
FROM TBL_COUNTING 
WHERE SOURCE_FILE_NAME = 'upload_trxn2015831_3039.csv';

我一直在尝试使用DF_RECORD_STATUS列操作数据,但它没用。

1 个答案:

答案 0 :(得分:0)

Oracle LAG和LEAD分析功能应该可以很好地完成工作。请参阅官方文档here或尝试此示例。我仍然不太清楚您的数据集,但这应该指向正确的方向:

   SELECT DF_RECORD_STATUS,
   SOURCE_FILE_NAME,
   STAGING_COUNT 
   LEAD(APP_HCP360_COUNT, 1) OVER (ORDER BY APP_HCP360_COUNT) AS "RecordCount" 
   FROM TBL_COUNTING 
   WHERE SOURCE_FILE_NAME = 'upload_trxn2015831_3039.csv';