--mesinicio parameter goes here
IF 1 = 1
THEN
---cantmeses parameter also here
IF 1 = 1 ---Invalid SQL statement
THEN
SELECT a.ctainterna, a.ejercicio, a.cuenta, a.nombre, a.dapertura, a.hapertura,a.dene, a.hene,a.saldototal FROM mccont a WHERE a.ejercicio = '?EJ'
AND a.tipocta=DECODE('?CU',1,1,0,0,2,A.TIPOCTA)
ORDER BY DECODE('?O','1',CTAINTERNA), DECODE('?O','2',CUENTA);
ELSIF '?cantmeses' = 2 THEN
SELECT a.ctainterna, a.ejercicio, a.cuenta, a.nombre, a.dapertura, a.hapertura,a.dene, a.hene,a.dfeb, a.hfeb,a.saldototal FROM mccont a WHERE a.ejercicio = '?EJ'
AND a.tipocta=DECODE('?CU',1,1,0,0,2,A.TIPOCTA)
ORDER BY DECODE('?O','1',CTAINTERNA), DECODE('?O','2',CUENTA);
ELSIF '?cantmeses' = 3 THEN
SELECT a.ctainterna, a.ejercicio, a.cuenta, a.nombre, a.dapertura, a.hapertura,a.dene, a.hene,a.dfeb, a.hfeb,a.dmar, a.hmar,a.saldototal FROM mccont a WHERE a.ejercicio = '?EJ'
AND a.tipocta=DECODE('?CU',1,1,0,0,2,A.TIPOCTA)
ORDER BY DECODE('?O','1',CTAINTERNA), DECODE('?O','2',CUENTA);
ELSIF '?cantmeses' = 4 THEN
SELECT a.ctainterna, a.ejercicio, a.cuenta, a.nombre, a.dapertura, a.hapertura,a.dene, a.hene,a.dfeb, a.hfeb,a.dmar, a.hmar,a.dabr,
a.habr,a.saldototal FROM mccont a WHERE a.ejercicio = '?EJ'
AND a.tipocta=DECODE('?CU',1,1,0,0,2,A.TIPOCTA)
ORDER BY DECODE('?O','1',CTAINTERNA), DECODE('?O','2',CUENTA);
ELSIF '?cantmeses' = 5 THEN
SELECT a.ctainterna, a.ejercicio, a.cuenta, a.nombre, a.dapertura, a.hapertura,a.dene, a.hene,a.dfeb, a.hfeb,a.dmar, a.hmar,a.dabr,
a.habr,a.dmay, a.hmay,a.saldototal FROM mccont a WHERE a.ejercicio = '?EJ'
AND a.tipocta=DECODE('?CU',1,1,0,0,2,A.TIPOCTA)
ORDER BY DECODE('?O','1',CTAINTERNA), DECODE('?O','2',CUENTA);
ELSIF '?cantmeses' = 6 THEN
SELECT a.ctainterna, a.ejercicio, a.cuenta, a.nombre, a.dapertura, a.hapertura,a.dene, a.hene,a.dfeb, a.hfeb,a.dmar, a.hmar,a.dabr,
a.habr,a.dmay, a.hmay, a.djun, a.hjun, a.saldototal FROM mccont a WHERE a.ejercicio = '?EJ'
AND a.tipocta=DECODE('?CU',1,1,0,0,2,A.TIPOCTA)
ORDER BY DECODE('?O','1',CTAINTERNA), DECODE('?O','2',CUENTA);
ELSIF '?cantmeses' = 7 THEN
SELECT a.ctainterna, a.ejercicio, a.cuenta, a.nombre, a.dapertura, a.hapertura,a.dene, a.hene,a.dfeb, a.hfeb,a.dmar, a.hmar,a.dabr,
a.habr,a.dmay, a.hmay, a.djun, a.hjun,a.djul, a.hjul, a.saldototal FROM mccont a WHERE a.ejercicio = '?EJ'
AND a.tipocta=DECODE('?CU',1,1,0,0,2,A.TIPOCTA)
ORDER BY DECODE('?O','1',CTAINTERNA), DECODE('?O','2',CUENTA);
ELSIF '?cantmeses' = 8 THEN
SELECT a.ctainterna, a.ejercicio, a.cuenta, a.nombre, a.dapertura, a.hapertura,a.dene, a.hene,a.dfeb, a.hfeb,a.dmar, a.hmar,a.dabr,
a.habr,a.dmay, a.hmay, a.djun, a.hjun,a.djul, a.hjul,a.dago, a.hago, a.saldototal FROM mccont a WHERE a.ejercicio = '?EJ'
AND a.tipocta=DECODE('?CU',1,1,0,0,2,A.TIPOCTA)
ORDER BY DECODE('?O','1',CTAINTERNA), DECODE('?O','2',CUENTA);
ELSIF '?cantmeses' = 9 THEN
SELECT a.ctainterna, a.ejercicio, a.cuenta, a.nombre, a.dapertura, a.hapertura,a.dene, a.hene,a.dfeb, a.hfeb,a.dmar, a.hmar,a.dabr,
a.habr,a.dmay, a.hmay, a.djun, a.hjun,a.djul, a.hjul,a.dago, a.hago,a.dset, a.hset, a.saldototal FROM mccont a WHERE a.ejercicio = '?EJ'
AND a.tipocta=DECODE('?CU',1,1,0,0,2,A.TIPOCTA)
ORDER BY DECODE('?O','1',CTAINTERNA), DECODE('?O','2',CUENTA);
ELSIF '?cantmeses' = 10 THEN
SELECT a.ctainterna, a.ejercicio, a.cuenta, a.nombre, a.dapertura, a.hapertura,a.dene, a.hene,a.dfeb, a.hfeb,a.dmar, a.hmar,a.dabr,
a.habr,a.dmay, a.hmay, a.djun, a.hjun,a.djul, a.hjul,a.dago, a.hago,a.dset, a.hset,a.doct, a.hoct, a.saldototal FROM mccont a WHERE a.ejercicio = '?EJ'
AND a.tipocta=DECODE('?CU',1,1,0,0,2,A.TIPOCTA)
ORDER BY DECODE('?O','1',CTAINTERNA), DECODE('?O','2',CUENTA);
ELSIF '?cantmeses' = 11 THEN
SELECT a.ctainterna, a.ejercicio, a.cuenta, a.nombre, a.dapertura, a.hapertura,a.dene, a.hene,a.dfeb, a.hfeb,a.dmar, a.hmar,a.dabr,
a.habr,a.dmay, a.hmay, a.djun, a.hjun,a.djul, a.hjul,a.dago, a.hago,a.dset, a.hset,a.doct, a.hoct,a.dnov, a.hnov, a.saldototal FROM mccont a WHERE a.ejercicio = '?EJ'
AND a.tipocta=DECODE('?CU',1,1,0,0,2,A.TIPOCTA)
ORDER BY DECODE('?O','1',CTAINTERNA), DECODE('?O','2',CUENTA);
ELSIF '?cantmeses' = 12 THEN
SELECT a.ctainterna, a.ejercicio, a.cuenta, a.nombre, a.dapertura, a.hapertura,a.dene, a.hene,a.dfeb, a.hfeb,a.dmar, a.hmar,a.dabr,
a.habr,a.dmay, a.hmay, a.djun, a.hjun,a.djul, a.hjul,a.dago, a.hago,a.dset, a.hset,a.doct, a.hoct,a.dnov, a.hnov,a.ddic, a.hdic, a.saldototal FROM mccont a WHERE a.ejercicio = '?EJ'
AND a.tipocta=DECODE('?CU',1,1,0,0,2,A.TIPOCTA)
ORDER BY DECODE('?O','1',CTAINTERNA), DECODE('?O','2',CUENTA);
END IF;
--febrero
ELSIF '?mesinicio' = 2 THEN
IF '?cantmeses' = 1
THEN
SELECT a.ctainterna, a.ejercicio, a.cuenta, a.nombre, a.dapertura, a.hapertura,a.dfeb, a.hfeb,a.saldototal FROM mccont a WHERE a.ejercicio = '?EJ'
AND a.tipocta=DECODE('?CU',1,1,0,0,2,A.TIPOCTA)
ORDER BY DECODE('?O','1',CTAINTERNA), DECODE('?O','2',CUENTA);
ELSIF '?cantmeses' = 2 THEN
SELECT a.ctainterna, a.ejercicio, a.cuenta, a.nombre, a.dapertura, a.hapertura,a.dfeb, a.hfeb,a.dmar, a.hmar,a.saldototal FROM mccont a WHERE a.ejercicio = '?EJ'
AND a.tipocta=DECODE('?CU',1,1,0,0,2,A.TIPOCTA)
ORDER BY DECODE('?O','1',CTAINTERNA), DECODE('?O','2',CUENTA);
ELSIF '?cantmeses' = 3 THEN
SELECT a.ctainterna, a.ejercicio, a.cuenta, a.nombre, a.dapertura, a.hapertura,a.dfeb, a.hfeb,a.dmar, a.hmar, a.dabr,
a.habr,a.saldototal FROM mccont a WHERE a.ejercicio = '?EJ'
AND a.tipocta=DECODE('?CU',1,1,0,0,2,A.TIPOCTA)
ORDER BY DECODE('?O','1',CTAINTERNA), DECODE('?O','2',CUENTA);
ELSIF '?cantmeses' = 4 THEN
SELECT a.ctainterna, a.ejercicio, a.cuenta, a.nombre, a.dapertura, a.hapertura,a.dfeb, a.hfeb,a.dmar, a.hmar, a.dabr,
a.habr,a.dmay, a.hmay,a.saldototal FROM mccont a WHERE a.ejercicio = '?EJ'
AND a.tipocta=DECODE('?CU',1,1,0,0,2,A.TIPOCTA)
ORDER BY DECODE('?O','1',CTAINTERNA), DECODE('?O','2',CUENTA);
ELSIF '?cantmeses' = 5 THEN
SELECT a.ctainterna, a.ejercicio, a.cuenta, a.nombre, a.dapertura, a.hapertura,a.dfeb, a.hfeb,a.dmar, a.hmar, a.dabr,
a.habr,a.dmay, a.hmay,a.djun, a.hjun,a.saldototal FROM mccont a WHERE a.ejercicio = '?EJ'
AND a.tipocta=DECODE('?CU',1,1,0,0,2,A.TIPOCTA)
ORDER BY DECODE('?O','1',CTAINTERNA), DECODE('?O','2',CUENTA);
ELSIF '?cantmeses' = 6 THEN
SELECT a.ctainterna, a.ejercicio, a.cuenta, a.nombre, a.dapertura, a.hapertura,a.dfeb, a.hfeb,a.dmar, a.hmar, a.dabr,
a.habr,a.dmay, a.hmay,a.djun, a.hjun,a.djul, a.hjul,a.saldototal FROM mccont a WHERE a.ejercicio = '?EJ'
AND a.tipocta=DECODE('?CU',1,1,0,0,2,A.TIPOCTA)
ORDER BY DECODE('?O','1',CTAINTERNA), DECODE('?O','2',CUENTA);
ELSIF '?cantmeses' = 7 THEN
SELECT a.ctainterna, a.ejercicio, a.cuenta, a.nombre, a.dapertura, a.hapertura,a.dfeb, a.hfeb,a.dmar, a.hmar, a.dabr,
a.habr,a.dmay, a.hmay,a.djun, a.hjun,a.djul, a.hjul,a.dago, a.hago,a.saldototal FROM mccont a WHERE a.ejercicio = '?EJ'
AND a.tipocta=DECODE('?CU',1,1,0,0,2,A.TIPOCTA)
ORDER BY DECODE('?O','1',CTAINTERNA), DECODE('?O','2',CUENTA);
ELSIF '?cantmeses' = 8 THEN
SELECT a.ctainterna, a.ejercicio, a.cuenta, a.nombre, a.dapertura, a.hapertura,a.dfeb, a.hfeb,a.dmar, a.hmar, a.dabr,
a.habr,a.dmay, a.hmay,a.djun, a.hjun,a.djul, a.hjul,a.dago, a.hago,a.dset, a.hset,a.saldototal FROM mccont a WHERE a.ejercicio = '?EJ'
AND a.tipocta=DECODE('?CU',1,1,0,0,2,A.TIPOCTA)
ORDER BY DECODE('?O','1',CTAINTERNA), DECODE('?O','2',CUENTA);
ELSIF '?cantmeses' = 9 THEN
SELECT a.ctainterna, a.ejercicio, a.cuenta, a.nombre, a.dapertura, a.hapertura,a.dfeb, a.hfeb,a.dmar, a.hmar, a.dabr,
a.habr,a.dmay, a.hmay,a.djun, a.hjun,a.djul, a.hjul,a.dago, a.hago,a.dset, a.hset,a.doct, a.hoct,a.saldototal FROM mccont a WHERE a.ejercicio = '?EJ'
AND a.tipocta=DECODE('?CU',1,1,0,0,2,A.TIPOCTA)
ORDER BY DECODE('?O','1',CTAINTERNA), DECODE('?O','2',CUENTA);
ELSIF '?cantmeses' = 10 THEN
SELECT a.ctainterna, a.ejercicio, a.cuenta, a.nombre, a.dapertura, a.hapertura,a.dfeb, a.hfeb,a.dmar, a.hmar, a.dabr,
a.habr,a.dmay, a.hmay,a.djun, a.hjun,a.djul, a.hjul,a.dago, a.hago,a.dset, a.hset,a.doct, a.hoct, a.dnov, a.hnov,a.saldototal FROM mccont a WHERE a.ejercicio = '?EJ'
AND a.tipocta=DECODE('?CU',1,1,0,0,2,A.TIPOCTA)
ORDER BY DECODE('?O','1',CTAINTERNA), DECODE('?O','2',CUENTA);
ELSIF '?cantmeses' = 11 THEN
SELECT a.ctainterna, a.ejercicio, a.cuenta, a.nombre, a.dapertura, a.hapertura,a.dfeb, a.hfeb,a.dmar, a.hmar, a.dabr,
a.habr,a.dmay, a.hmay,a.djun, a.hjun,a.djul, a.hjul,a.dago, a.hago,a.dset, a.hset,a.doct, a.hoct, a.dnov, a.hnov,a.ddic, a.hdic,a.saldototal FROM mccont a WHERE a.ejercicio = '?EJ'
AND a.tipocta=DECODE('?CU',1,1,0,0,2,A.TIPOCTA)
ORDER BY DECODE('?O','1',CTAINTERNA), DECODE('?O','2',CUENTA);
ELSIF '?cantmeses' = 12 THEN
SELECT a.ctainterna, a.ejercicio, a.cuenta, a.nombre, a.dapertura, a.hapertura,a.dfeb, a.hfeb,a.dmar, a.hmar, a.dabr,
a.habr,a.dmay, a.hmay,a.djun, a.hjun,a.djul, a.hjul,a.dago, a.hago,a.dset, a.hset,a.doct, a.hoct, a.dnov, a.hnov,a.ddic, a.hdic,a.dene, a.hene,a.saldototal FROM mccont a WHERE a.ejercicio = '?EJ'
AND a.tipocta=DECODE('?CU',1,1,0,0,2,A.TIPOCTA)
ORDER BY DECODE('?O','1',CTAINTERNA), DECODE('?O','2',CUENTA);
END IF;
ELSE
select * from mccont;
END IF;
大家好,我试着订购基于参数'mesinicio'和'cantmeses'的月份栏
“mesinicio”表示起始月份,“cantmeses”表示月份数
我试图替换参数来测试它是否工作,并在第二个“if”中抛出我和错误,说“invalidsqlstatement”而不是别的。我看不出我做错了什么,希望能得到一些帮助。谢谢
当做
2条答案
按热度按时间643ylb081#
在sql中,您要寻找的if逻辑是case语句。
我建议使用case语句创建一个名为“filter”的新派生列,该列根据指定的条件标识每一行。但您只选择一次,而不在case语句中嵌套select。
这样地:
4jb9z9bj2#
看来你的逻辑可以简化为
我对这张table的设计有个建议。每个月有两个字段(例如1月数据的dene和hene,2月数据的dfeb和hfeb,3月数据的dmar和hmar,等等)。更好的选择是有一个标题表和一个单独的月数据数据,每个月的数据都存储在一个单独的行中
这允许您使用连接将数据放在一起,如
这可能会使你的任务更容易一些。