需要一些关于编写sql查询的建议吗

需要一些关于编写sql查询的建议吗,sql,sql-server,Sql,Sql Server,我有一个包含[Date]、[ProductId]、[NewProduct]列的视图。其中,[Date]始终为[yyyy-mm-01],因此对于给定的月份,[NewProduct]对于任何productId都可以为1或0。 我正试图在此基础上创建另一个视图,但我想实现一个更改。如果某一产品在给定月份被标记为[新产品],则该产品应在该年剩余月份被标记为[新产品] 示例这是我的原始视图:ProductView1 如您所见,产品:261220标记为2018-05-01的新产品。 我想要的是,我想要创建另

我有一个包含[Date]、[ProductId]、[NewProduct]列的视图。其中,[Date]始终为[yyyy-mm-01],因此对于给定的月份,[NewProduct]对于任何productId都可以为1或0。 我正试图在此基础上创建另一个视图,但我想实现一个更改。如果某一产品在给定月份被标记为[新产品],则该产品应在该年剩余月份被标记为[新产品]

示例这是我的原始视图:ProductView1

如您所见,产品:261220标记为2018-05-01的新产品。 我想要的是,我想要创建另一个从该视图派生的视图,该视图应该将产品:261220标记为2018年剩余时间的新产品

我正在尝试编写如下查询:

但新的view Mark产品:261220将作为下个月的新产品,而不是当年所有剩余月份的新产品

根据我的查询,ProductView2如下所示:


我不确定如何实现所需的输出。

尝试在更新后使用触发器,检查条件月份大于本月的where子句,检查此列是否已更新,然后再更新其他列。

您使用的是哪种SQL格式?可以显示用于创建原始视图的查询吗?我使用的是sql server 2017。 CREATE View [dbo].[ProductView2] As SELECT [ProductView1].[Date] ,[ProductView1].[ProductId] ,Case WHEN ([ProductView1Prev].[New Product] = 1 AND Month([ProductView1Prev].[Date]) <> 12) THEN 1 ELSE [ProductView1].[New Product] END AS [New Product] FROM [dbo].[ProductView1] left join [ProductView1] as [ProductView1Prev] ON [ProductView1].CustomerId = [ProductView1Prev].CustomerId and [ProductView1].[Date] = dateadd(month,+1,[ProductView1Prev].[Date])