Манипулировать базой данных в iReport - PullRequest
1 голос
/ 26 января 2012

надеюсь, кто-нибудь может помочь мне понять, как решить мой вопрос.У меня в таблице баз данных «ПЛАТЕЖИ», например:

| PAYMENTS.PAYMENT | PAYMENTS.TOTAL   |  
| CASH             |1000              |  
| DEBT             |500               | 
| DEBTPAID         |200               |

Проблема в том, что CASH рассчитывается как наличные от продаж плюс DEBTPAID.Поэтому мне нужно, чтобы эти данные были индивидуально (CASH-DEBTPAID AS CASH) в моем отчете.

Как я могу в iReport изменить PAYMENTS.PAYMENT, как я описал выше.Я очень ценю вашу поддержку!Заранее спасибо!

Ответы [ 4 ]

1 голос
/ 09 февраля 2012

Извините, я продолжаю ходить вокруг и вокруг этого.

Если вы ищете это:

|ПЛАТЕЖИ. ОПЛАТА |PAYMENTS.TOTAL |
|НАЛИЧНЫЕ | 800 |
|ДОЛГ | 500 |

Это даст вам следующее:

SELECT CASE WHEN PAYMENTS.PAYMENT IN ('CASH', 'DEBTPAID') THEN 'CASH' ELSE PAYMENTS.PAYMENT END PAYMENT,
       SUM(CASE WHEN PAYMENTS.PAYMENT= 'DEBTPAID' THEN -PAYMENTS.TOTAL ELSE PAYMENTS.TOTAL END) TOTAL

FROM   PAYMENTS

GROUP BY CASE WHEN PAYMENTS.PAYMENT IN ('CASH', 'DEBTPAID') THEN 'CASH' ELSE PAYMENTS.PAYMENT END
1 голос
/ 08 февраля 2012

Этот SQL даст вам отдельную запись для CASH и DEBT:

SELECT CASE WHEN PAYMENTS.PAYMENT IN ('CASH', 'DEBTPAID') THEN 'CASH' ELSE PAYMENTS.PAYMENT END AS PAYMENT,
       SUM(PAYMENTS.TOTAL) AS TOTAL

FROM   PAYMENTS

GROUP BY CASE WHEN PAYMENTS.PAYMENT IN ('CASH', 'DEBTPAID') THEN 'CASH' ELSE PAYMENTS.PAYMENT END
1 голос
/ 09 февраля 2012

Это должно сделать это.

SELECT SUM(CASE WHEN PAYMENTS.PAYMENT= 'CASH' THEN PAYMENTS.TOTAL ELSE 0 END)
        -
       SUM(CASE WHEN PAYMENTS.PAYMENT= 'DEBTPAID' THEN PAYMENTS.TOTAL ELSE 0 END) AS CASH,
       SUM(CASE WHEN PAYMENTS.PAYMENT = 'DEBT' THEN PAYMENTS.TOTAL ELSE 0 END) AS DEBT

FROM   PAYMENTS
1 голос
/ 08 февраля 2012

Этот оператор SQL вернет вам общий CASH и общий долг в одной записи.

SELECT SUM(CASE WHEN PAYMENTS.PAYMENT IN ('CASH', 'DEBTPAID') THEN PAYMENTS.TOTAL ELSE 0 END)
       AS CASH,
       SUM(CASE WHEN PAYMENTS.PAYMENT = 'DEBT' THEN PAYMENTS.TOTAL ELSE 0 END) AS DEBT

FROM   PAYMENTS

Это даст вам правильные итоги на основе данных, которые вы нам предоставили.

Если бы вы хотели отдельные записи, это нужно было бы сделать немного по-другому (я мог бы показать вам).

...