sql - 需要一些建议来编写一个 sql 查询
问题描述
我有一个包含 [Date]、[ProductId]、[NewProduct] 列的视图。其中 [Date] 始终为 [yyyy-mm-01],因此对于给定月份,对于任何 productId,[NewProduct] 可以是 1 或 0。我正在尝试基于此创建另一个视图,但我想实现一个更改。如果某个产品在给定月份被标记为 [NewProduct],那么它应该在该年的剩余月份被标记为 [NewProduct]。
示例这是我的原始视图:ProductView1
如您所见,产品:261220 被标记为 2018-05-01 的新产品。我想要的是我想创建另一个从这个视图派生的视图,它应该有 product: 261220 标记为 2018 年剩余时间的新产品。
我正在尝试编写这样的查询:
创建视图 [dbo].[ProductView2] 作为 选择 [ProductView1]。[日期] ,[ProductView1].[ProductId] ,Case WHEN ([ProductView1Prev].[New Product] = 1 AND Month([ProductView1Prev].[Date]) <> 12) 那么 1 ELSE [ProductView1].[新产品] END AS [新产品] FROM [dbo].[ProductView1] 左连接 [ProductView1] 作为 [ProductView1Prev] ON [ProductView1].CustomerId = [ProductView1Prev].CustomerId 和 [ProductView1].[Date] = dateadd(month,+1,[ProductView1Prev].[Date])
但是新视图将产品标记为:261220 为下个月的新产品,而不是当年剩余的所有月份。
根据我的查询,ProductView2 看起来像这样:
我不确定如何实现所需的输出。
解决方案
尝试使用带有检查条件的“更新后触发器”(通过 where 子句比本月大的月份)并检查该列是否已更新,然后也更新其他列。
推荐阅读
- arrays - 测试数组中“undef”与“空槽”的区别
- sql - 按块分组并获取每个块的开始和结束时间 - SQL
- firebase - 如何停止firestore离线
- python - 在 tkinter 上将垂直滚动条调整为帧大小
- sql - 如何使用rownum关键字在oracle中找到前5名不同的薪水
- flutter - 如何在 Flutter 中禁用 SnackBar 的淡入/淡出动画?
- excel - 单页VBA全屏
- python - 如何使用 python 抓取使用基于 ajax 的分页的网站?
- server - 如何将 X-Frame-Options 标头设置为 Jboss-as-7.1.1.Final?要求是在服务器的欢迎页面中设置此标头
- c# - C# 调用列表
到主班