首页  >  问答  >  正文

SQL - 当lineid为'01'时,使用newid,否则使用id

我的表中有此类数据

行号 价格 €
01 100.00
02 200.00
01 10.34
01 311.12
01 14.33
02 36.44
03 89.70
04 11.33

我希望我的输出是这样的

文档 行号 价格 €
1 01 100
1 02 200.00
2 01 10.34
3 01 311.12
4 01 14.33
4 02 36.44
4 03 89.70
4 04 11.33

它的发票数据以及每行具有 lineid='01' 的数据意味着该信息适用于不同的发票,因此我必须使用新的 documentID 对其进行标记,我希望您帮助我使用命令创建它。< /p>

这可能很简单,但我在这里像疯子一样搜索,但找不到解决方案。

编辑:是的,我想要的是“每次 lineid 等于 01 时递增 docid”

P粉394812277P粉394812277180 天前382

全部回复(1)我来回复

  • P粉648469285

    P粉6484692852024-04-03 09:50:47

    您可以使用如下所示的运行计数(假设这是您正在谈论的 MS SQL)

    SELECT ROW_NUMBER() over(partition by [LineId] order by [LineId]) as DocId,
          [LineId],
          [Price]
      FROM [StackOverflow].[dbo].[RunningCount] order by [LineId]

    回复
    0
  • 取消回复