GROUP BY加入?

时间:2017-07-10 19:09:36

标签: tsql sql-server-2012 group-by calendar inner-join

我有一个数据表和一个日历表。日期表仅包含MonthName和FiscalYearName字段。我的日历表每年都有一天。如何编写JOIN以确保由于无法在约会时加入而导致我没有获得重复数据?现在我只是链接这两个字段,我得到重复的数据。

1 个答案:

答案 0 :(得分:1)

你能详细说明确切的问题吗?

如果月份和年份是唯一的字段,为什么您需要加入日历?要摆脱重复,最简单的解决方案可能是使用' DISTINCT'。

SELECT DISTINCT dat.year, dat.month, *
  FROM date dat
  JOIN calendar cal
    ON dat.year  = cal.year
   AND dat.month = cal.month

编辑; 额外查询只显示MonthNum; 此查询使用公用表表达式,该表达式仅获取不同的月份名称及其编号,然后在此cte上加入日期表。

WITH cteCalendar AS
(
SELECT DISTINCT MonthName, MonthNum FROM calendar
)
SELECT cte.MonthNum, dat.*
FROM date dat
JOIN cteCalendar cte
AS dat.MonthName = cte.MonthName