Sql 将交易记录值大于或小于零的发票分组
我试图对此提出疑问,但我还没有运气。各表如下:Sql 将交易记录值大于或小于零的发票分组,sql,join,Sql,Join,我试图对此提出疑问,但我还没有运气。各表如下: INVOICE ID | INVOICENUMBER | CUSTOMER | VALUE 1 | 999 | 8 | 9000 2 | 999 | 8 | 1000 INVOICE_TRANSACTION InvoiceID | TYPE | VALUE 1 | cust | 5000 1 | cust | 2000 2 | cust | 1000 2 | cust | -1000 INVOICE_DETAIL InvoiceID | PU
INVOICE
ID | INVOICENUMBER | CUSTOMER | VALUE
1 | 999 | 8 | 9000
2 | 999 | 8 | 1000
INVOICE_TRANSACTION
InvoiceID | TYPE | VALUE
1 | cust | 5000
1 | cust | 2000
2 | cust | 1000
2 | cust | -1000
INVOICE_DETAIL
InvoiceID | PURCHASEORDERID
1 | 7777
PURCHASE_ORDER
PURCHASEORDERID | ORDERTYPE
7777 | gross
PURCASE_ORDER_DETAILS
PURCHASEORDERID | ROW | STATUS
7777 | 1 | 1
7777 | 2 | 2
7777 | 3 | 3
我想要的结果是:
INVOICE VALUE TRANSACTION VALUE PURCHASEORDERID ORDERTYPE HIGH STATUS LOW STATUS
------- ----- ----------------- --------------- --------- ----------- ----------
1 9000 7000 7777 gross 3 1
换句话说,我希望结果将所有发票号分组,这些发票号的总发票金额大于或小于0。我对这一切都不熟悉,有人能帮我开始吗?要从价值不为零的发票交易中获取发票ID
SELECT InvoiceID
FROM INVOICE_TRANSACTION
GROUP BY InvoiceID
HAVING SUM(VALUE) <> 0
看起来你想要这样的东西:
select i.id,
sum(i.value) value,
it.value TransValue,
p.purchaseorderid,
p.ordertype,
pd.highstatus,
pd.lowstatus
from invoice i
left join
(
select sum(value) value, invoiceid
from invoice_transaction
group by invoiceid
) it
on i.id = it.invoiceid
left join invoice_detail id
on i.id = id.invoiceid
left join purchase_order p
on id.purchaseorderid = p.purchaseorderid
left join
(
select max(status) highStatus, min(status) LowStatus,
purchaseorderid
from purcase_order_details
group by purchaseorderid
) pd
on p.purchaseorderid = pd.purchaseorderid
where it.value <> 0
group by i.id, p.purchaseorderid, p.ordertype;
请参见我强烈建议为此创建一个sql。您使用的是什么sqlmysql、postgre、ms sql?什么版本?分组方式,且trans_值为0。剩下的留给OP做练习