Sql 选择之前和之后一年的数据

Sql 选择之前和之后一年的数据,sql,Sql,我使用以下查询来提取一年期的未来订单。有没有办法在今天之前和之后一年提取数据 SELECT ord_ln.prdnum AS 'Product', ord.cusnam, product.prddsc AS 'Description', ord_ln.stdnetwgt AS 'Case_Weight', ord_ln.prdlincod AS 'Line_Code', ord_ln.ordqty AS 'Order_Qty', ord.plnshpdat AS 'P

我使用以下查询来提取一年期的未来订单。有没有办法在今天之前和之后一年提取数据

SELECT ord_ln.prdnum AS 'Product', ord.cusnam, product.prddsc AS 'Description',
       ord_ln.stdnetwgt AS 'Case_Weight', ord_ln.prdlincod AS 'Line_Code',
       ord_ln.ordqty AS 'Order_Qty', ord.plnshpdat AS 'Plan_Ship_Date'
FROM velocity.dbo.ord ord,
     velocity.dbo.ord_ln ord_ln,
     velocity.dbo.product product
WHERE ord.ordtky = ord_ln.ordtky
  AND product.prdtky = ord_ln.prdtky
  AND ((ord.plnshpdat Between DATEADD(dd,0,GETDATE()) And DATEADD(dd,365,GETDATE())))
ORDER BY ord_ln.prdlincod

提前感谢。

在查询中使用前声明2个变量并计算年份。(以防您担心性能;)


下面是我编写查询的方式:

SELECT ol.prdnum as Product, o.cusnam, p.prddsc as Description,
       ol.stdnetwgt as Case_Weight, ol.prdlincod as Line_Code,
       ol.ordqty as Order_Qty, o.plnshpdat as Plan_Ship_Date
FROM velocity.dbo.ord o JOIN
     velocity.dbo.ord_ln ol
     ON o.ordtky = ol.ordtky JOIN
     velocity.dbo.product p
     ON p.prdtky = ol.prdtky
WHERE o.plnshpdat Between DATEADD(year, -1, GETDATE()) And DATEADD(year, 1, GETDATE())
ORDER BY ol.prdlincod;
变化:

  • 我将表别名简化为表的缩写:更易于编写和阅读
  • 我引入了显式的
    JOIN
    语法。切勿在
    FROM
    子句中使用逗号
  • 我删除了列别名周围的单引号。仅对字符串和日期常量使用单引号。使用它们作为列名很可能会出错
  • 我把日期算术改成了你的问题所要求的

(1)用您正在使用的数据库标记您的问题。(2) 学习使用正确的
JOIN
语法。简单规则:不要在
FROM
子句中使用逗号。谢谢,我会记住:)这里既有特定于产品的语法,也有特定于产品的函数。你用的是哪种数据库管理系统???谢谢Mahesh Chand,我能用什么方法处理变量呢?我用Excel从SQL中提取数据,而且永远用不完。我用GUI进行查询,我会记住的,谢谢Gordon Linoff
SELECT ol.prdnum as Product, o.cusnam, p.prddsc as Description,
       ol.stdnetwgt as Case_Weight, ol.prdlincod as Line_Code,
       ol.ordqty as Order_Qty, o.plnshpdat as Plan_Ship_Date
FROM velocity.dbo.ord o JOIN
     velocity.dbo.ord_ln ol
     ON o.ordtky = ol.ordtky JOIN
     velocity.dbo.product p
     ON p.prdtky = ol.prdtky
WHERE o.plnshpdat Between DATEADD(year, -1, GETDATE()) And DATEADD(year, 1, GETDATE())
ORDER BY ol.prdlincod;