【发布时间】:2017-07-11 06:00:26
【问题描述】:
我有一个数据表,我正在使用计数语句来获取提交日期的记录数量 例子
AuditId Date Crew Shift Cast ObservedBy 2ndObserver AuditType Product
16 2017-06-27 3 Day B1974, B1975 Glen Mason NULL Identification Billet
20 2017-06-29 1 Day 9879 Corey Lundy NULL Identification Billet
21 2017-06-29 4 Day T9627, T9625 Joshua Dwyer NULL ShippingPad Tee
22 2017-06-29 4 Day NULL Joshua Dwyer NULL Identification Billet
23 2017-06-29 4 Day S9874 Joshua Dwyer NULL ShippingPad Slab
24 2017-06-29 4 Day Bay 40 Joshua Dwyer NULL Identification Billet
基本上我使用以下代码来获取我的结果
SELECT YEAR([Date]) as YEAR, CAST([Date] as nvarchar(25)) AS [Date], COUNT(*) as "Audit Count"
FROM AuditResults
where AuditType = 'Identification' AND Product = 'Billet'
group by Date
返回示例
YEAR Date Audit Count
2017 2017-06-27 1
2017 2017-06-29 3
现在我希望能够检索所有日期,即使是空白的 所以我希望回报是
YEAR Date Audit Count
2017 2017-06-27 1
2017 2017-06-28 0
2017 2017-06-29 3
我正在尝试使用以下功能:
ALTER FUNCTION [dbo].[fnGetDatesInRange]
(
@FromDate datetime,
@ToDate datetime
)
RETURNS @DateList TABLE (Dt date)
AS
BEGIN
DECLARE @TotalDays int, @DaysCount int
SET @TotalDays = DATEDIFF(dd,@FromDate,@ToDate)
SET @DaysCount = 0
WHILE @TotalDays >= @DaysCount
BEGIN
INSERT INTO @DateList
SELECT (@ToDate - @DaysCount) AS DAT
SET @DaysCount = @DaysCount + 1
END
RETURN
END
我如何在这个函数中使用我的 select 语句?或者,还有更好的方法? 干杯
【问题讨论】:
标签: sql-server tsql stored-functions