仅将条目的第一条记录计为1

时间:2017-02-22 04:16:43

标签: sql sql-server

我一直在寻找,但无法得到正在寻找的结果。也许我没有设法说好,请原谅。

这是一个示例数据,我有这个政策表

policy_Id   name    deleted invoice number  amount
2341       jeffa       0       po02345      £10.00
2342       jeffa       0       po02345      £0.00
2343       jeffa       0       po02345      £5.00
6348       kross       0       po84762      £2.00
4723       mad         0       po67452      £3.00

我期待的结果将会是这样的

policy_Id   name    deleted invoice number  amount  Count_policy Added
2341        jeffa      0       po02345       £10.00     1
2341        jeffa      0       po02345       £0.00      0
2341        jeffa      0       po02345       £5.00      0
6348        kross      0       po84762       £2.00      1
4723        mad        0       po67452       £3.00      1

我希望能够使用MS sql查询执行此操作。发票号码po2345,金额列有3个条目。我希望第一个为1,剩余2个为零。

全部谢谢

1 个答案:

答案 0 :(得分:0)

你可以这样做:

SELECT policy_Id, name, deleted, invoice_number, amount, CASE ROW_NUMBER() OVER (PARTITION BY policy_Id ORDER BY someId) WHEN 1 THEN 1 ELSE 0 END Count_Policy
FROM your_table
ORDER BY policy_Id

使用ROW_NUMBER(),您可以在“幕后”分组和排序后计算行号。

在我使用ORDER BY的{​​{1}}中,您应该在那里指定提供当前订单的字段,这在您的代码中并不明确。该订单将定义共享someId的哪一条记录将具有policy_Id

相关问题