当前位置: 首页 > 面试题库 >

选择价格不变的行

夏振国
2023-03-14
问题内容

假设您有一个类似的表(使用SQL Server 2008,没有审核日志-表很大):

 SecID | Date    | Price
 1       1/1/11      10
 1       1/2/11      10
 1       1/3/11      5
 1       1/4/11      10
 1       1/5/11      10

假设此表非常庞大(数百万行用于不同的secID和Date)-价格更改后,我想返回记录(寻找比使用游标和迭代更好的东西):

我正在尝试弄清楚如何获得:

 SecID | StartDate | EndDate | Price
 1        1/1/11      1/2/11    10
 1        1/3/11      1/3/11    5
 1        1/4/11      1/5/11    10

即另一种查看方式是我正在寻找价格保持不变的日期范围。


问题答案:

这是一个“孤岛”问题。

declare @Yourtable table
 (SecID int, Date Date, Price int)

 INSERT INTO @Yourtable
SELECT 1,GETDATE()-5,10 union all
SELECT 1,GETDATE()-4,10 union all
SELECT 1,GETDATE()-3,5 union all
SELECT 1,GETDATE()-2,10 union all
SELECT 1,GETDATE()-1, 10

;WITH cte AS
(
SELECT SecID,Date,Price,
       ROW_NUMBER() OVER (PARTITION BY SecID ORDER BY Date) -
       ROW_NUMBER() OVER (PARTITION BY Price, SecID ORDER BY Date) AS Grp
FROM @Yourtable
)
SELECT SecID,Price, MIN(Date) StartDate, MAX(Date) EndDate
FROM cte
GROUP BY SecID, Grp, Price
ORDER BY SecID,  MIN(Date)


 类似资料:
  • 在我们的woocommerce网站上,我试图根据客户从下拉菜单中选择的变化来更新显示的价格,如下所示: 我使用了LoictheAztec在另一个答案中提交的php函数: 用WooCommerce 3中选择的Variable Price替换Variable Price range 但是,当选择一个变体时,它会在FROM:$PRICE下面显示未定义,如下所示: 未定义错误示例: 因此,如果有人能帮助我

  • 我在Woocommerce下运行我的演示商店,我想将当您选择产品变体时显示的价格移动到数量字段的正下方,而不是介于数量字段和上一个变体之间。 这是我在文件到目前为止,但它不起作用: 我在什么地方出错了吗?

  • 我有一个表格,其中包含根据订购的数量和下订单的客户类型的特定项目的价格... 我在SQL中的WHERE子句中遇到问题,无法选择客户根据订购数量获得最佳价格的行。规则是,他们必须至少满足数量,才能获得该定价层的价格。如果他们的订单低于最低数量,那么他们将获得第一个数量的价格(本例中为10),如果他们的订单超过最大数量(本例中为30),则他们将获得该价格。 例如如果一家餐厅订购26单位奶酪,则应选择I

  • 我正在我的WooCommerce网店上为我的产品制作一个自定义附加组件。一切正常,但我只需要一件事。当客户选中产品页面上的复选框时,必须将$30添加到所选变体的原始价格中。 这部分:检查复选框是否被选中。 我的问题就在这里: 的值仅为0。 因此,我试图找出如何获得所选变体的价格。 我尝试了和,但没有任何运气... 更新我已经尝试从这个线程实现代码。有了这些代码,我可以得到所选变体的价格,但我不能再

  • 我已经创建了这段代码,可以在网站上的任何页面上显示价格,这是由woocommerce控制的。 我想做的是修改代码,这样如果客户选择了一个变化的产品。然后价格变化以显示变化价格。例如,现在如果一个人选择了一种产品,在这种情况下是一个酊剂瓶,价格变化与瓶子的大小有关。在产品页面上,他们看到以下内容:- 产品(酊剂)30美元-50美元 从下拉菜单中,他们可以选择10mg瓶($30)、15mg瓶($40)

  • 我当前的查询看起来像这样: 但是,在输入他们的名字或姓氏时,客人可能会决定在他们的名字中加一个空格(例如,安妮·玛丽或安妮·玛丽或安妮·玛丽应该是同一个人)。我想做的是能够执行上面的代码,但是where语句只能基于字母进行比较,而不考虑空格和大小写。我希望这是有意义的! 我将在表“来宾”中预先填入我的来宾姓名。我不想输入没有大写或空格的姓名,因为这些信息也将用于联系他们。 帮忙?