Sql server 2005 自动填充缺失日期行的值
我有一张类似下面的桌子Sql server 2005 自动填充缺失日期行的值,sql-server-2005,Sql Server 2005,我有一张类似下面的桌子 Date | qty1 | qty2 | qty3 | qty4 | column6 1 july | 33 | 0 | 0 | 0 | xyz 1 July | 0 | 20 | 0 | 0 | xyz 1 July | 18 | 0 | 0 | 0 | abc 3 July | 0 | 0 | 0 | 11 | abc 3 july | 23 | 0 | 0 |
Date | qty1 | qty2 | qty3 | qty4 | column6
1 july | 33 | 0 | 0 | 0 | xyz
1 July | 0 | 20 | 0 | 0 | xyz
1 July | 18 | 0 | 0 | 0 | abc
3 July | 0 | 0 | 0 | 11 | abc
3 july | 23 | 0 | 0 | 0 | xyz
4 July | 0 | 40 | 0 | 0 | xyz
4 July | 57 | 0 | 0 | 0 | abc
7 July | 0 | 12 | 0 | 0 | xyz
我在SQLServer2005中的存储过程中寻找如下输出
Date | qty1 | qty2 | qty3 | qty4
1 July | 51 | 20 | 0 | 0
2 July | 0 | 0 | 0 | 0
3 July | 23 | 0 | 0 | 11
4 July | 57 | 40 | 0 | 0
5 July | 0 | 0 | 0 | 0
6 July | 0 | 0 | 0 | 0
7 July | 0 | 12 | 0 | 0
正如您所注意到的,我希望它自动为缺少的日期设置0值。我想知道这是否可能。您可以在日期列上使用GETDATE()自动获取它(除非您打算在其中丢失日期值)。在另一种情况下,可以在该列中设置默认值(或默认约束),如果这是您的意思,则将默认值设置为0。或者,您的意思是要返回到已插入的行并编辑列吗?在存储过程中,您可以将其处理为isNull(列,0)如果您可以从实际的表中默认生成一个月内的所有日期,则它将适用于存储过程中的插入或检索查询。:1意味着解决方案将非常简单。。。像
SELECT date AS Date ,
ISNULL(qty1, '') AS qty1,
ISNULL(qty2, '') AS qty2,
ISNULL(qty3, '') AS qty3,
ISNULL(qty4, '') AS qty4,
FROM your_table_name where for_all_date
否则你想做一些像这样的
CREATE PROCEDURE put_null ()
AS
DECLARE @start_date DATETIME
DECLARE @End_date DATETIME
BEGIN
SELECT TOP 1 @start_date = date FROM your_table_name ORDER BY Date
SELECT TOP 1 @End_date = date FROM your_table_name ORDER BY Date DESC
WHILE(@start_Date < = @End_date)
BEGIN
SELECT @start_date AS Date ,
ISNULL(qty1, 0) AS qty1,
ISNULL(qty2, 0) AS qty2,
ISNULL(qty3, 0) AS qty3,
ISNULL(qty4, 0) AS qty4,
FROM your_table_name
SET @start_date = DATEADD(DAY,1,@start_date)
END
END
创建过程put\u null()
作为
声明@start_date DATETIME
声明@End_date DATETIME
开始
从表格中选择TOP 1@start\u date=日期按日期排序
从您的表格中选择TOP 1@End\u date=date\u name ORDER BY date DESC
而(@start\u Date<=@End\u Date)
开始
选择@start_date作为日期,
ISNULL(qty1,0)作为qty1,
ISNULL(qty2,0)作为qty2,
ISNULL(qty3,0)作为qty3,
ISNULL(qty4,0)作为qty4,
从您的\u表\u名称
设置@start\u date=DATEADD(第1天,@start\u date)
结束
结束
希望这能解决你的问题 谢谢你的回复,但我不明白你在这里的确切意思。我将在哪里写
isnull(第0列)
?