简体   繁体   English

如何为日期列i生成uniqueRowdate数字?

[英]How to generate uniqueRowdate number for a datecolumn i?

I have a date column in my table i need to generate a unique rowdate for date change.I have used CONVERT(varchar(50),cast(product as DATE),112) but i am not getting unique for date. 我的表中有一个日期列,我需要为日期更改生成一个唯一的行日期。我使用了CONVERT(varchar(50),cast(product as DATE),112)但我却没有在日期中唯一。 My Table look likes below. 我的表如下所示。

Product 
02/22/2014
02/22/2014
02/22/2014
02/22/2014
02/23/2014
02/23/2014
02/23/2014
02/23/2014
02/23/2014
02/24/2014
02/24/2014
02/24/2014

The output look to be 输出看起来是

201402221
201402222
201402223
201402224
201402231
201402232
201402233
201402234
201402235
201402241
201402242
201402243

Note:I need it because no value should be matched.Please help me guys i tried 80% by using above formula but i am not getting any idea adding row numbers for date?? 注意:我需要它,因为没有值应该匹配。请帮助我,我使用上述公式尝试了80%,但我不知道为日期添加行号吗?

select concat(replace(cast(product as date), '-', ''),
              row_number() over(partition by product order by product)) as prod_id
  from tbl

SQL Fiddle demo: http://sqlfiddle.com/#!6/0a526/7/0 SQL Fiddle演示: http ://sqlfiddle.com/#!6/0a526/7/0

You can use ROW_NUMBER() 您可以使用ROW_NUMBER()

SELECT ROW_NUMBER() OVER( ORDER BY Product) AS rn, *
FROM your_table  

The ROW_NUMBER() function would generate count starting with 1. In case you want to initialize the count from some arbitrary value say 201402221, then you can add a base count to count column like below: ROW_NUMBER()函数将从1开始生成计数。如果要从某个任意值(例如201402221)初始化计数,则可以将基本计数添加到count列,如下所示:

SELECT ROW_NUMBER() OVER( ORDER BY Product) + 201402220 AS rn, *
FROM your_table 
declare @FromDate date = '2014-03-05'
declare @ToDate date = '2014-12-31'

select dateadd(day,rand(checksum(newid()))*(1+datediff(day, @FromDate, @ToDate)),@FromDate)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM