【发布时间】:2019-01-27 23:15:35
【问题描述】:
基本上我想要一个计算字段,当 VeganOption = 1 时递增 1,当 VeganOption = 0 时为零
我尝试使用以下查询,但使用分区在零后继续递增。我有点卡在这个上。
SELECT [UniqueId]
,[Meal]
,[VDate]
,[VeganOption]
, row_number() over (partition by [VeganOption] order by [UniqueId])
FROM [Control]
order by [UniqueId]
表格数据:
CREATE TABLE Control
([UniqueId] int, [Meal] varchar(10), [VDate] datetime, [VeganOption] int);
INSERT INTO Control ([UniqueId], [Meal], [VDate], [VeganOption])
VALUES
('1', 'Breakfast',' 2018-08-01 00:00:00', 1),
('2', 'Lunch',' 2018-08-01 00:00:00', 1),
('3', 'Dinner',' 2018-08-01 00:00:00', 1),
('4', 'Breakfast',' 2018-08-02 00:00:00', 1),
('5', 'Lunch',' 2018-08-02 00:00:00', 0),
('6', 'Dinner',' 2018-08-02 00:00:00', 0),
('7', 'Breakfast',' 2018-08-03 00:00:00', 1),
('8', 'Lunch',' 2018-08-03 00:00:00', 1),
('9', 'Dinner',' 2018-08-03 00:00:00', 1),
('10', 'Breakfast',' 2018-08-04 00:00:00', 0),
('11', 'Lunch',' 2018-08-04 00:00:00', 1),
('12', 'Dinner',' 2018-08-04 00:00:00', 1)
;
这适用于 SQL Server 2016+
【问题讨论】:
-
我知道赞成票表明了这一点,但很高兴看到一个精心设计的问题,包括样本数据、预期结果、尝试,然后在
CREATE和 @987654326 @ 陈述。谢谢你。 :) -
@Larnu 而不是通常的琐碎转换从 varchar 到 datetime 对于 chagne :-)
-
真正困扰我的是“如何拆分这个分隔列表”问题@ZoharPeled。这么多……哈哈
标签: sql sql-server tsql sql-server-2016 gaps-and-islands