SQL - 当lineid为'01'时,使用newid,否则使用id
P粉394812277
P粉394812277 2024-04-02 12:08:51
[MySQL讨论组]

我的表中有此类数据

行号 价格 €
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粉394812277
P粉394812277

全部回复(1)
P粉648469285

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

SELECT ROW_NUMBER() over(partition by [LineId] order by [LineId]) as DocId,
      [LineId],
      [Price]
  FROM [StackOverflow].[dbo].[RunningCount] order by [LineId]
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号