如何在SQL中创建具有连续日期的表?

时间:2017-11-22 15:47:35

标签: sql-server

我想创建一个包含id的表和包含日期系列的多个列。我的意思是

CREATE TABLE IF NOT EXISTS price_scrapp(
  id varchar(250),
  price_date1 date,
  price_date2 date,
  price_date3 date,
  price_date4 date,
  price_date5 date,
  price_date6 date
  #...
);

其中date1date2date3,...必须是自动生成的日期。在我的情况下,必须是接下来的100个星期一。

"2017-11-27" "2017-12-04" "2017-12-11" "2017-12-18" "2017-12-25" "2018-01-01"
"2018-01-08" "2018-01-15" "2018-01-22" "2018-01-29" "2018-02-05" ...

结果必须是

结果

  price_2017-11-27 price_2017-12-04 price_2017-12-11 price_2017-12-18 price_2017-12-25 price_2018-01-01
           418467           199387           319402           359454           489591           112756
            88735           481561           310659           307747           291171           172578
           378819           298426            99965           302950            86076           431515
           167211           460831           360240           202222           393621           151283
           386879           108820           293997           234300           188834           108695
           257698           493266           306417           465134           317937           323749

1 个答案:

答案 0 :(得分:0)

这是一个更好的设置...

  • INT 使用ID数据类型,让SQL Server使用IDENTITY属性
  • 为您自动增加此值
  • 只有三列,IDprice_dateprice
  • 如果您未指定日期,则在price_date上放置一个默认值,该值将插入当前日期(当您插入数据时)

因此,它看起来像这样:

create table price_scrapp ( id varchar(250)
                         ,price_date date default(getdate())
                         ,price decimal(8,2))


insert into price_scrapp (id,price)
values
('fo_12345678',418467)


--then the next week you insert more data...
insert into price_scrapp  (id,price)
values
('fo_12345678',546541.44)

--but today we want to specify a date....
insert into price_scrapp  (id,price_date,price)
values
('fo_12345678','20171101',400.13)

select * from price_scrapp

然后,如果您真的想以您在帖子中显示的方式呈现数据,请研究Dynamic Pivot。

以下是一些例子:

https://stackoverflow.com/a/45042349/6167855

https://stackoverflow.com/a/40598475/6167855

https://stackoverflow.com/a/45423065/6167855

http://sqlhints.com/2014/03/18/dynamic-pivot-in-sql-server/