set @sql='select x.*,index2=identity(int,1,1)into #temp from #pr_tmd_wkpmx x '
print(@sql)
exec(@sql +' select * from #temp')
如果在上面@sql 中加条件的话,由于本身已经有单引号了,但是值有必须有‘’表示varchar
so for example
set @col1='''a'''; //要用三个单引号
set @sql ="select * from table where col1="+@col1
下面是一个游标和存储过程在一起的例子,其中包含了两种给列加序列的思路
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[pr_tmd_wkpmx]
-- Add the parameters for the stored procedure here
@c_nf varchar(10),@c_yf varchar(10) ,@c_ssbm1 varchar(50),@c_km1 varchar(50),@c_yhlx1 varchar(50)
AS
create table #pr_tmd_wkpmx(
index1 int,
mc varchar(50),
tdh1 varchar(50),
mz varchar(50),
tddw numeric(18,2),
st numeric(18,2),
wkp numeric(18,2),
sy numeric(18,2),
rq1 datetime,
ssbm1 varchar(50),
km1 varchar(50),
yhlx1 varchar(50)
)
declare @index int,@mc varchar(50),@c_tdh varchar(50),@mz varchar(50),@tddw numeric(18,2),
@st numeric(18,2), @wkp numeric(18,2), @sy numeric(18,2), @d_rq datetime,@c_ssbm2 varchar(50),@c_km2 varchar(50),@c_yhlx2 varchar(50),@sql varchar(500),@result int,@text1 varchar(50)
select @index =0;
declare Cur cursor for
select (select c_khmc from yjmis.dbo.TB_YX_KHXX_DATA where t.c_khmc = c_khid)khmc,c_tdh,
(select mc from yjmis.dbo.tb_yx_mzwhb_dd where c_pz=id)mz,n_tddw,n_byst,n_wkp,(n_tddw-n_byst)sy,d_tdrq ,c_ssbm,c_km,c_yhlx
from yjmis.dbo.TB_YX_YFYSWKPMLMX_DATA t
where year(d_tdrq)=@c_nf and month(d_tdrq)=@c_yf and c_ssbm = @c_ssbm1 and c_km = @c_km1 and c_yhlx=@c_yhlx1
union all
select '小计','','',sum(n_tddw),sum(n_byst),sum(n_wkp),sum(sy),null,'','','' from (
select (select c_khmc from yjmis.dbo.TB_YX_KHXX_DATA where t.c_khmc = c_khid)khmc,c_tdh,
(select mc from yjmis.dbo.tb_yx_mzwhb_dd where c_pz=id)mz,n_tddw,n_byst,n_wkp,(n_tddw-n_byst)sy,d_tdrq ,c_ssbm,c_km,c_yhlx
from yjmis.dbo.TB_YX_YFYSWKPMLMX_DATA t
where year(d_tdrq)=@c_nf and month(d_tdrq)=@c_yf and c_ssbm = @c_ssbm1 and c_km = @c_km1 and c_yhlx=@c_yhlx1)tx
open Cur
fetch next from Cur into @mc,@c_tdh,@mz,@tddw,@st,@wkp,@sy,@d_rq,@c_ssbm2,@c_km2,@c_yhlx2
while (@@fetch_status = 0)
BEGIN
SELECT @index=@index+1
insert into #pr_tmd_wkpmx
select @index,@mc,@c_tdh,@mz,@tddw,@st,@wkp,@sy,@d_rq ,@c_ssbm2,@c_km2,@c_yhlx2
fetch next from Cur into @mc,@c_tdh,@mz,@tddw,@st,@wkp,@sy,@d_rq,@c_ssbm2,@c_km2,@c_yhlx2
END
close Cur
deallocate Cur
set @sql='select x.*,index2=identity(int,1,1)into #temp from #pr_tmd_wkpmx x '
print(@sql)
exec(@sql +' select * from #temp')
分享到:
相关推荐
- 然后按照指定的顺序逐个比较 `WHEN` 子句中的 `input_expression = when_expression`。 - 如果发现匹配项,则立即返回相应的 `result_expression`。 - 如果没有任何匹配项,则根据是否存在 `ELSE` 子句返回 `else_...
例如,当你需要按照特定顺序(如自定义的字母顺序或数值顺序)对非数字字段进行排序时,可以借助`DECODE`函数或`CASE-WHEN`语句来实现自定义排序。下面将详细介绍这两种方法。 1. **DECODE函数** Oracle的`DECODE`...
- 当`CASE`表达式中包含多个`WHEN`子句时,SQL引擎会按照出现的顺序依次检查每个条件,直到找到符合条件的为止。 ### 总结 通过对SQL中的CASE语句进行详细的介绍和实例分析,我们可以看到CASE语句的强大功能和灵活...
在MySQL中,`CASE WHEN` 是一个非常强大的表达式,常用于进行复杂的条件判断和排序。这个表达式允许我们在SQL查询中根据不同的条件执行不同的操作,例如改变字段的值或控制排序顺序。在本篇文章中,我们将深入探讨...
在搜索 CASE 函数中,按指定顺序计算每个 `Boolean_expression`,返回第一个为 TRUE 的 `Boolean_expression` 的 `result_expression`。如果所有 `Boolean_expression` 都不为 TRUE,返回 `else_result_expression`...
### VHDL中的并行语句与顺序语句详解 #### 并行语句与顺序语句的概念 在VHDL编程语言中,并行语句与顺序语句是两种基本的控制结构,它们分别用于描述并发行为和顺序行为。正确理解和应用这两种语句对于设计高效的...
SELECT @sql = @sql + ', MAX(CASE WHEN ' + γ + ' THEN ELSE 0 END) [' + γ + ']' FROM (SELECT DISTINCT γ FROM tb) AS a SET @sql = @sql + ' FROM tb GROUP BY ' EXEC (@sql) ``` ##### 2.2 SQL Server 2005...
WHEN 'B' THEN 3 ELSE 4 END; ``` 在这段代码中,当`ProvienceName`为“A”时,分配值1;为“C”时,分配值2;为“B”时,分配值3;其余情况分配值4。最终,数据将按照1、2、3、4的顺序进行排序,即实现了“ACBD...
2. `CASE selector WHEN value THEN`形式,这里的`selector`是一个值或表达式,根据这个值匹配条件。例如: ```sql SELECT CASE substr(to_char(SYSDATE, 'yyyymmdd'), 5, 2) WHEN '01' THEN '一月份' WHEN '...
- `case when a.colorder = 1 then d.name else '' end`: 如果列顺序为1,则返回表名,否则返回空字符串。 - `case when a.colorder = 1 then isnull(f.value, '') else '' end`: 如果列顺序为1,则返回表的注释或...
- `case when a.colorder = 1 then d.name else '' end`:如果列顺序`colorder`为1,则返回表名`d.name`,否则返回空字符串。 - `case when a.colorder = 1 then isnull(f.value, '') else '' end`:如果列顺序为1...
CASE 表达式 WHEN THEN…比 CASE WHEN 表达式 THEN… 效率要高(没有验证过) 5、删除重复记录: 最高效的删除重复记录方法 ( 因为使用了ROWID)例子: DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID) ...
在数据库查询中,CASE表达式常被用来转换、分类或者解释数据,尤其是在需要根据某一列的值来决定输出何种信息时。下面我们将详细讨论CASE表达式的用法和应用场景。 1. **CASE表达式的基本结构** CASE表达式主要有两...
本文将详细介绍数据库基础知识,包括SQL常用对象的整理、系统表的整理、获取列的基本信息、数据表列的整理、Case When基本语法、Covert Case区别、Exec与Exec()及Exec sp_executesql的使用、SqlServer执行顺序、...
SELECT 学号, 姓名, 等级 = CASE WHEN 总学分 IS NULL THEN '尚未选课' WHEN 总学分 < 50 THEN '不及格' WHEN 总学分 >= 50 AND 总学分 <= 52 THEN '合格' ELSE '优秀' END FROM xsb ``` 这将将 xsb 表中的总学分列...
WHEN condition1 THEN value1 WHEN condition2 THEN value2 ELSE default_value END WHERE condition; ``` 4. MySQL 数据分组和聚合 在 MySQL 中,可以使用`GROUP BY`语句将数据按照一个或多个列进行分组,并...
order by Name, case Subject when '语文' then 1 when '数学' then 2 when '物理' then 3 end ``` 这条语句将 tb1 表中的数据合并为一个表,并将每个科目的成绩合并为一列。 五、union 和 union all 的区别 union...
(CASE WHEN a.colorder = 1 THEN d.name ELSE '' END), a.colorder, a.name, (CASE WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity') = 1 THEN '是' ELSE '否' END) AS IsIdentity, (CASE WHEN (SELECT COUNT...
,100 * SUM(CASE WHEN C# = '001' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) AS 企业管理及格百分数 ,SUM(CASE WHEN C# = '002' THEN score ELSE 0 END)/SUM(CASE C# ...