想要用一个替换几个更新 [英] want to replace several updates with just one

查看:58
本文介绍了想要用一个替换几个更新的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨所有



i有一个gridview我在哪里显示时间表



第一列是iduser以下是从一个月的第1天开始的日子



我想要的是在时间表中设置假日天数



这里是我的sql代码



hi to all

i have a gridview where i show a schedule

first column is the iduser the following are the days, starting at day 1 of a month

what i want is to set the holidays days in the schedule

here is the sql code that i have

DECLARE @Date_Start AS DATETIME 
DECLARE @Schedule TABLE(Idx NUMERIC IDENTITY(1,1) PRIMARY KEY, IdUser NVARCHAR(20), D01 CHAR(14), D02 CHAR(14), D03 CHAR(14), D04 CHAR(14), D05 CHAR(14), UNIQUE(IdUser)) 
DECLARE @Holidays TABLE(Idx NUMERIC IDENTITY(1,1) PRIMARY KEY NOT NULL, Holiday DATETIME NOT NULL, UNIQUE(Holiday)) 

SET @Date_Start = CAST('2014-01-01 00:00:00.000' AS DATETIME) 

INSERT INTO @Schedule VALUES('0708', 'day 1', 'day 2', 'day 3', 'day 4', 'day 5') 
INSERT INTO @Schedule VALUES('0899', 'day 1', 'day 2', 'day 3', 'day 4', 'day 5') 
INSERT INTO @Schedule VALUES('0933', 'day 1', 'day 2', 'day 3', 'day 4', 'day 5') 
INSERT INTO @Schedule VALUES('1097', 'day 1', 'day 2', 'day 3', 'day 4', 'day 5') 
INSERT INTO @Schedule VALUES('1126', 'day 1', 'day 2', 'day 3', 'day 4', 'day 5') 
INSERT INTO @Schedule VALUES('1513', 'day 1', 'day 2', 'day 3', 'day 4', 'day 5') 

INSERT INTO @Holidays VALUES(CAST('2014-01-02 00:00:00.000' AS DATETIME)) 
INSERT INTO @Holidays VALUES(CAST('2014-01-04 00:00:00.000' AS DATETIME)) 


--UPDATE X SET X.[D01] = 'Holiday' FROM @Schedule X, @Holidays Y WHERE DATEDIFF(dd, @Date_Start, Y.[Holiday]) = '0' 
--UPDATE X SET X.[D02] = 'Holiday' FROM @Schedule X, @Holidays Y WHERE DATEDIFF(dd, @Date_Start, Y.[Holiday]) = '1' 
--UPDATE X SET X.[D03] = 'Holiday' FROM @Schedule X, @Holidays Y WHERE DATEDIFF(dd, @Date_Start, Y.[Holiday]) = '2' 
--UPDATE X SET X.[D04] = 'Holiday' FROM @Schedule X, @Holidays Y WHERE DATEDIFF(dd, @Date_Start, Y.[Holiday]) = '3' 
--UPDATE X SET X.[D05] = 'Holiday' FROM @Schedule X, @Holidays Y WHERE DATEDIFF(dd, @Date_Start, Y.[Holiday]) = '4' 


UPDATE X 
SET [D01] = CASE WHEN DATEDIFF(dd, @Date_Start, Y.[Holiday]) = '0' THEN 'Holiday' ELSE [D01] END, 
[D02] = CASE WHEN DATEDIFF(dd, @Date_Start, Y.[Holiday]) = '1' THEN 'Holiday' ELSE [D02] END, 
[D03] = CASE WHEN DATEDIFF(dd, @Date_Start, Y.[Holiday]) = '2' THEN 'Holiday' ELSE [D03] END, 
[D04] = CASE WHEN DATEDIFF(dd, @Date_Start, Y.[Holiday]) = '3' THEN 'Holiday' ELSE [D04] END, 
[D05] = CASE WHEN DATEDIFF(dd, @Date_Start, Y.[Holiday]) = '4' THEN 'Holiday' ELSE [D05] END 
FROM @Schedule X INNER JOIN @Holidays Y ON Y.Idx IN ('1', '2') 

SELECT * FROM @Schedule 
SELECT * FROM @Holidays 







评论的更新做我的意思想要



非评论是我网络搜索的结果,但我不明白这种更新格式



ON部分是我最后一次尝试了解它是如何工作的经历...但我没有得到它



对此有所帮助好的或不同的方式



感谢您的时间和回复




the commented updates do what i want

the non commented is the result of my web search, but i don't understand this format of update

the "ON" part is my last experience trying to understand how it works... but i don't get it

some help on this would be nice or a diffrent way

thanks for the time and replys

推荐答案

它看起来我是卡住

内容很短?!...
it looks that i am stuck
the content is short?!...


这篇关于想要用一个替换几个更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆