将多个查询合并到单个查询中(在SQL Server中,包含变量?)

问题描述:

我想将以下查询应用于其他两个circ_slip值(“付款”和“退款”)以适用于大量地点。将多个查询合并到单个查询中(在SQL Server中,包含变量?)

delete from circ_slip_field 
where location = 'NEW LOCATION' and circ_slip = 'waive' 
go 
declare @copy_loc varchar(7), @new_loc varchar(7) 
select @copy_loc = 'OLD LOCATION' 
select @new_loc = 'NEW LOCATION' 
insert circ_slip_field 
     (circ_slip,location,section,ord,circ_slip_field_type,label,field_column, 
     append_to_prev,justify,max_field_len,min_field_len,data_mask) 
select circ_slip,@new_loc,section,ord,circ_slip_field_type,label,field_column, 
     append_to_prev,justify,max_field_len,min_field_len,data_mask 
from circ_slip_field 
where circ_slip = 'waive' and location = @copy_loc 

所以我添加下面一行的开头,然后复制原始查询三次,免去的“放弃”分别“支付”和“退”的两个实例。

declare @copy_loc varchar(7), @new_loc varchar(7) 
select @copy_loc = 'COPY LOCATION' 
select @new_loc = 'NEW LOCATION' 

我还删除了两个select变量语句(@copy_loc和@new_loc),因为它们已经被声明。

任何想法为什么这不适合我?我会非常感激。不用说,我一般对SQL很陌生。

**编辑︰由“没有工作”我的意思是查询运行没有错误,但没有做任何改变的新位置。

*第二次编辑:我认为这个问题可能与“去”命令。为了让变量在整个过程中都能正常工作,我需要从我的三个复制查询中删除'去'。

+1

“_Any想法为什么这不适合我?_”你怎么定义“没有工作”? – mustaccio

+1

由于我们不知道你在说什么,当你说“不适合我”时,你很难猜测原因可能是什么。我们无法阅读您的想法,也没有您的数据或其他代码在我们面前。 “没有工作”是没有意义的,除非你也解释**它是如何工作的。你收到错误信息了吗?如果是这样,它说了什么?它是否有意想不到的事情?还是它没有做你认为应该做的事?请编辑您的问题,具体说明您要求我们帮助您解决的问题。谢谢。 –

+0

如果您单独运行查询的选择部分,会得到什么结果? –

注意@copy_loc和@new_loc被定义为varchar(7),但是你将12个字符放入它们中。它们被截断并且不匹配表中的字段。使变量varchar(50)。别担心,它不会占用比需要更多的空间。

+0

好点,这将是一个问题。但是我使用的实际数据由三个字母的位置代码组成,所以我认为varchar(7)就足够了 – Marc