[英]How to select the most recent date for a specific condition in another column in Postgres?
[英]SQL to select top most column with specific condition
我有这样的发票表:
Bill Item Qty Weight Rate Amount Advance
10001 Dal 1 10.00 70.00 700.00 500.00
10001 Jeera 2 0.60 1200.00 720.00 500.00
10002 Bread 1 0.80 50.00 40.00 0.00
10003 Coffee 1 1.00 700.00 700.00 0.00
10004 Tea 1 0.70 900.00 700.00 0.00
请注意,对于第10001号法案,预付款总额仅为500,但对Dal和Jeera项目重复两次。 我需要一个SQL来显示针对Dal或Jeera的仅一个预付款,该预付款具有如下最大金额:
Bill Item Qty Weight Rate Amount Advance
10001 Dal 1 10.00 70.00 700.00 0.00
10001 Jeera 2 0.60 1200.00 720.00 500.00
10002 Bread 1 0.80 50.00 40.00 0.00
10003 Coffee 1 1.00 700.00 700.00 0.00
10004 Tea 1 0.70 900.00 700.00 0.00
此处唯一的变化是第10001号帐单的Dal项目预付款金额为0。请帮助我在SQL Server中实现此目的。
提前致谢。
;with cte as
(
select *,
row_number() over(partition by Bill order by Advance desc) as rn
from YourTable
)
select
C.Bill,
C.Item,
C.Qty,
C.Weight,
C.Rate,
C.Amount,
case C.rn when 1 then C.Advance else 0 end as Advance
from cte as C
直觉是您的桌子没有被标准化。
我建议将其分解成较小的表
可能类似:
+- Bills -------+
| |
| BillNo INT |
+---------------+
+- Items ------------+
| |
| Item varchar(20) |
+--------------------+
+- BillItems --------+
| |
| BillNo INT |
| Advance MONEY |
+--------------------+
然后,针对表中最细化的对象(即“项目”)存储预付款。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.