将 ekstra 月加入数据集 sql
Join ekstra months to dataset sql
首先,感谢所有帮助我解决这个问题的人。我正在使用 SQL 2012,
我有一行数据如下所示:
| myPK | Name| Month | Value |
1 SB 1 500
2 SB 4 100
所以我现在想要的是整年之间的月份(我有一个日期 table 包含有关日期的所有信息)。结果应该是:
| Month | Name | Value |
1 SB 500
2 SB 0
3 SB 0
4 SB 100
5 SB 0
6 SB 0
如何添加原始数据集中没有的所有额外月份?
为了获得想要的结果,我通常会创建一个模板 dataset/query,这样它就能提供我想要在报告中显示的所有值。
然后我会 LEFT JOIN
到此模板以获取我的值并将任何 NULL
值替换为 0。
WITH ReportTemplate AS
(
SELECT DISTINCT
Name
, MonthNumber
FROM
MyTable
CROSS JOIN
(
SELECT
MonthNumber
FROM
MonthDate
WHERE
MonthNumber BETWEEN 1 AND 6
) AS Months
)
, ReportData AS
(
SELECT
Name
, MonthNumber
, SUM(Value) AS Value
FROM
MyTable
GROUP BY
Name
, MonthNumber
)
SELECT
t.Name
, t.MonthNumber
, ISNULL(d.Value, 0) AS Value
FROM
ReportTemplate AS t
LEFT JOIN ReportData aS d
ON t.Name = d.Name
AND t.MonthNumber = d.MonthNumber
首先,感谢所有帮助我解决这个问题的人。我正在使用 SQL 2012,
我有一行数据如下所示:
| myPK | Name| Month | Value |
1 SB 1 500
2 SB 4 100
所以我现在想要的是整年之间的月份(我有一个日期 table 包含有关日期的所有信息)。结果应该是:
| Month | Name | Value |
1 SB 500
2 SB 0
3 SB 0
4 SB 100
5 SB 0
6 SB 0
如何添加原始数据集中没有的所有额外月份?
为了获得想要的结果,我通常会创建一个模板 dataset/query,这样它就能提供我想要在报告中显示的所有值。
然后我会 LEFT JOIN
到此模板以获取我的值并将任何 NULL
值替换为 0。
WITH ReportTemplate AS
(
SELECT DISTINCT
Name
, MonthNumber
FROM
MyTable
CROSS JOIN
(
SELECT
MonthNumber
FROM
MonthDate
WHERE
MonthNumber BETWEEN 1 AND 6
) AS Months
)
, ReportData AS
(
SELECT
Name
, MonthNumber
, SUM(Value) AS Value
FROM
MyTable
GROUP BY
Name
, MonthNumber
)
SELECT
t.Name
, t.MonthNumber
, ISNULL(d.Value, 0) AS Value
FROM
ReportTemplate AS t
LEFT JOIN ReportData aS d
ON t.Name = d.Name
AND t.MonthNumber = d.MonthNumber