求sqlserver的写法
表1
姓名补贴类别补贴标准执行日期
a住宿补贴3002023-1-1
a住宿补贴6002023-5-1
a通讯补贴2002023-1-1
a通讯补贴5002023-7-1
b………………
求某员工2023年全年每一个月每一类补贴的类型及其对应的金额,如何得到下面的结果
日期姓名补贴类别补贴标准
2023-1-1a住宿补贴300
2023-2-1a住宿补贴300
2023-3-1a住宿补贴300
2023-4-1a住宿补贴300
2023-5-1a住宿补贴600
2023-6-1a住宿补贴600
2023-7-1a住宿补贴600
2023-8-1a住宿补贴600
2023-9-1a住宿补贴600
2023-10-1a住宿补贴600
2023-11-1a住宿补贴600
2023-12-1a住宿补贴600
2023-1-1a通讯补贴200
2023-2-1a通讯补贴200
2023-3-1a通讯补贴200
2023-4-1a通讯补贴200
2023-5-1a通讯补贴200
2023-6-1a通讯补贴200
2023-7-1a通讯补贴500
2023-8-1a通讯补贴500
2023-9-1a通讯补贴500
2023-10-1a通讯补贴500
2023-11-1a通讯补贴500
2023-12-1a通讯补贴500

已经解决,方法参考:

sql server - SQL Query to get the value of a product given a date - Stack Overflow

SQL 用户X0519751 发布于 2024-1-12 20:52 (编辑于 2024-1-14 18:15)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
用户X0519751Lv5见习互助
发布于2024-1-14 18:15
最佳回答
0
CD20160914Lv8专家互助
发布于2024-1-12 22:06

两个有啥关系。看不出来你最终要什么?直接按姓名,类型和年月group by 不就行了?

  • 用户X0519751 用户X0519751(提问者) 从第一张表选取数据,得到第二张表
    2024-01-13 11:05 
  • CD20160914 CD20160914 回复 用户X0519751(提问者) 没有看懂,第一张才几条数据,为什么第二张就那么多数据了呢
    2024-01-13 11:20 
  • 用户X0519751 用户X0519751(提问者) 回复 CD20160914 第一张表表达的意思是,a员工,住宿补贴,2023年1-4月份是300,从5月份开始变为600了。他的通讯补贴,1-6月份是200,从7月份开始调整为500。 第二张表,就是把2023年1-12月,每个月,每个类别的补贴展现出来。
    2024-01-13 11:39 
  • CD20160914 CD20160914 回复 用户X0519751(提问者) 你自己创建一张日期维度表,里面有每年每月一号的日期,这样现关联就行了
    2024-01-13 11:42 
  • 用户X0519751 用户X0519751(提问者) 回复 CD20160914 日期维度表我已经创建了,但是直接用左连接,住宿补贴只能得到1月和5月这两个月的补贴金额,其余月份都是null
    2024-01-13 11:45 
最佳回答
0
用户k6280494Lv6资深互助
发布于2024-1-13 08:52

select 姓名,补贴类别,CONVERT(VARCHAR(7), 执行日期, 120) ny,sum(补贴标准) je from 表1

where year(执行日期)='2023'

group by 姓名,补贴类别,CONVERT(VARCHAR(7), 执行日期, 120)

  • 2关注人数
  • 309浏览人数
  • 最后回答于:2024-1-14 18:15
    请选择关闭问题的原因
    确定 取消
    返回顶部