sql - SQL Server 查询日期
问题描述
我有一个包含两列 start_date 和 End_date 的主表,我需要加入 Date dim 表,并且有两列作为 start_date 和 end_date。但我无法得到预期的结果。
对于某些记录,我得到了重复的结果。
有人可以帮忙吗?
主表:
日期表:
这是我的查询:
SELECT DISTINCT
Invoice_Credit_Fact.Inv_Crd_key,
Invoice_Credit_Fact.Customer_Key,
Invoice_Credit_Fact.Period_Key,
Invoice_Credit_Fact.Product_Key,
Invoice_Credit_Fact.SalesPerson_Key,
Invoice_Credit_Fact.Inv_Crd_No,
Invoice_Credit_Fact.Your_Ref,
Invoice_Credit_Fact.Alt_Ref,
Invoice_Credit_Fact.Order_No,
Invoice_Credit_Fact.Bid_No,
Invoice_Credit_Fact.Creator,
Invoice_Credit_Fact.Support_Start_Date,
Invoice_Credit_Fact.Support_End_Date,
Invoice_Credit_Fact.MLA_Number,
Invoice_Credit_Fact.New_Renew_Cancelled,
Invoice_Credit_Fact.Qty,
Invoice_Credit_Fact.Unit_Price,
Invoice_Credit_Fact.Total_Value,
Invoice_Credit_Fact.Cost,
Invoice_Credit_Fact.Cogs_Adj,
Invoice_Credit_Fact.Margin,
Period_Ref_Start.Year_Num as Start_Year,
Period_Ref_Start.Month_Num as Start_Month,
Period_Ref_Start.Period_Key as Supp_start_key,
Period_Ref_End.Year_Num as End_Year,
Period_Ref_End.Month_Num as End_Month,
Period_Ref_End.Period_Key as Supp_end_key,
Invoice_credit_fact.description
FROM
Invoice_Credit_Fact,
Product_Ref,
Period_Ref Period_Ref_Start,
Period_Ref Period_Ref_End
WHERE
Invoice_Credit_Fact.Product_Key = Product_Ref.Product_Key
AND DATEADD(day, 5, ISNULL(Invoice_Credit_Fact.Support_Start_Date, '9999-01-01'))
BETWEEN Period_Ref_Start.Start_Date AND Period_Ref_Start.End_Date
AND DATEADD(day, -5, ISNULL(Invoice_Credit_Fact.Support_End_Date, '9999-01-01'))
BETWEEN Period_Ref_End.Start_Date AND Period_Ref_End.End_Date
ORDER BY
Invoice_Credit_Fact.Inv_Crd_No
结果包含重复的行。请告诉我如何消除查询中的重复项
解决方案
您正在获取重复的数据,因为在 Maintable 中,该列SUPPORT_START_DATE
是Star_date
第二个表中的列,您可以通过PERIOD_KEY
推荐阅读
- python - 当 Pandas DataFrame 中的某个值在另一列中实现时,如何编辑一列中的值?
- python - View 没有返回 HttpResponse 对象。它返回 None 代替。当与 FormView 一起使用正常形式时,django
- java - 属性名称中的 JBoss CLI 特殊字符
- python - 将数据发送到烧瓶而不重新加载页面
- c++ - c++ 项目中令人困惑的定义指令
- java - 休眠搜索将一个实体索引到两个不同的索引
- selenium - Selenium 未通过代理加载页面,显示构建信息:版本:'未知',修订:'未知',时间:'未知'
- c++ - 结构化绑定初始化程序表单 { assignment-expression } 在 clang 上的数组类型失败
- python - 如果 Pandas 数据框中的两个布尔值为真,如何替换元素
- webpack - 运行 webpack encore 时出现语法错误