【发布时间】:2020-03-30 08:32:43
【问题描述】:
我有一个表值函数,它返回如下内容:
现在,我有一个日期范围作为参数,比如说 '2020-03-01' 和 '2020-04-15'
我还想要添加一列,显示从 '2020-03-01' 到 '2020-04-15'
的所有日期
它应该是这样的:
Overtime | Status | DTR | DATE_START | DATE
1. NULL | NULL | NULL | NULL | 2020-03-01
2. NULL | NULL | NULL | NULL | 2020-03-02
...
...
...
30. 6:32PM-9:32PM | Pending For Approval | NULL | 2020-03-30 | 2020-03-30
...
...
...
我的代码是这样的,不要介意 95476237:
SELECT CAST(a.IndividualDate as date)
FROM DateRange('d', @start, @end) as a
LEFT JOIN support.dbo.overtimeReport('95476237', @start, @end) as b on CAST(a.IndividualDate as date) = CAST(b.DATE_START as date)
结果,我只得到了这个,
更新:小错误,我忘了提及 SELECT 语句中的其余列。感谢@iamdave
【问题讨论】:
-
您需要为此使用日历表,然后将日历表与您需要的结果连接起来。见答案here。
-
如果您需要这方面的进一步帮助,请提供示例数据和预期结果,然后我们将提供帮助...
-
谢谢@amm,您提供的示例数据是截图。为了让我们能够轻松地为您提供帮助,请避免使用屏幕截图,除非您的预期结果...
-
calendar table 绝对是您想要的。构建其中之一,您可能也会得到答案。
-
JOIN 与选择要显示的列无关(“哪列”由 SELECT 列表驱动)——它们更多的是选择要显示的相关行!
标签: sql-server stored-procedures left-join user-defined-functions