我需要帮助来解码一个String。我想我需要一个PL / SQL脚本来解码String,但我对PL / SQL的了解不是特别的。
我有一个包含7列
的表实施例
1 = Monday
2 = Tuesday
3 = Wednesday
4 = Thursday
5 = Friday
6 = Saturday
7 = Sunday
8 = Holiday (25.12 =Christmas day)
T1字段始终在31.12.XXYY结束 并且提交的T2和T3始终在同一天T2开始于01.01.XXYY并且T3开始于01.07.2013
在第一行中我有对象1244与Num 8和文本提交“tgl”并且在T1-T3 Field的后面 关于这一点,我可以看到,对象1244每天从2012年12月9日至2013年12月14日开始移动 数字6和27的对象120仅在工作日和星期六移动 和对象169有num 13,T1到T3字段只有7或8,这意味着这个对象只在星期日和假日移动
表示例:
object Year Num text T1 T2 T3
1244 2013 8 tgl 71234567123456718845671 8345671234567123456712345671234567123456712345671234567123456712345671234567123456712345678234567123456712345671234567128456712385671234567823456712385671234567123456712345671234567 12345671234567123456712345671234567123456712385671234567123456712345671234567123456712345671234567123456712345671234587123486712345671234567123456712345671234567123456
120 2013 6 Sa ======6======6======6== ====6======6======6======6======6======6======6======6======6======6======6======6======6======6======6======6======6======6======6======6======6======6======6======6======6======6= =====6======6======6======6======6======6======6======6======6======6======6======6======6======6======6======6======8======6======6======6======6======6======6======6
120 2013 27 X(Sa) =12345==12345==1==45==1 =345==12345==12345==12345==12345==12345==12345==12345==12345==12345==12345==12345==12345===2345==12345==12345==12345==12=45==123=5==12345===2345==123=5==12345==12345==12345==12345== 12345==12345==12345==12345==12345==12345==123=5==12345==12345==12345==12345==12345==12345==12345==12345==12345==12345==1234===12345==12345==12345==12345==12345==12345=
169 2013 13 + 7======7======7=88===7= 8====7======7======7======7======7======7======7======7======7======7======7======7======78=====7======7======7======7==8===7===8==7======78=====7===8==7======7======7======7======7 ======7======7======7======7======7======7===8==7======7======7======7======7======7======7======7======7======7=====87====8=7======7======7======7======7======7======
我需要的是: 我需要一个Object移动时的所有日子(应该可用于SQL语句) 所以行对象,年份,数字,文本,解码日
Example:
Object Year Num text Day
1244 2013 8 tgl 09.12.2012
1244 2013 8 tgl 10.12.2012
1244 2013 8 tgl 11.12.2012
... ....
答案 0 :(得分:2)
看起来T1-T3就像一个日历。我无法理解为什么数据被分为三列。我将假设T1||T2||T3
是一个日历,其中每个字母都是以01-01-YEAR
开头的一年中的一天,并使用您自己的业务规则进行修改。
日历中的数字看起来与查询无关,因此您的问题显示为一个简单的数据透视,您可以使用不同的方法解决这些问题,例如(SQLFiddle):
SQL> SELECT ID, YEAR, num, text, substr(t1 || t2 || t3, lvl, 1) subst,
2 to_date(YEAR||'-01-01', 'YYYY-MM-DD') + lvl - 1 dt
3 FROM DATA
4 CROSS JOIN (SELECT ROWNUM lvl
5 FROM dual
6 CONNECT BY LEVEL <= (SELECT MAX(length(t1 || t2 || t3))
7 FROM DATA))
8 WHERE substr(t1 || t2 || t3, lvl, 1) != '='
9 ORDER BY 1 DESC, lvl;
ID YEAR NUM TEXT SUBST DT
---------- ---------- ---------- --------------- ------ -----------
1244 2013 8 tgl 7 01/01/2013
1244 2013 8 tgl 1 02/01/2013
1244 2013 8 tgl 2 03/01/2013
1244 2013 8 tgl 3 04/01/2013
1244 2013 8 tgl 4 05/01/2013
1244 2013 8 tgl 5 06/01/2013