`

case when then 加顺序列

阅读更多

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')

 

 

分享到:
评论

相关推荐

    CASE的用法 (Transact-SQL)

    - 然后按照指定的顺序逐个比较 `WHEN` 子句中的 `input_expression = when_expression`。 - 如果发现匹配项,则立即返回相应的 `result_expression`。 - 如果没有任何匹配项,则根据是否存在 `ELSE` 子句返回 `else_...

    Oracle用decode函数或CASE-WHEN实现自定义排序

    例如,当你需要按照特定顺序(如自定义的字母顺序或数值顺序)对非数字字段进行排序时,可以借助`DECODE`函数或`CASE-WHEN`语句来实现自定义排序。下面将详细介绍这两种方法。 1. **DECODE函数** Oracle的`DECODE`...

    sql判断语句.txt

    - 当`CASE`表达式中包含多个`WHEN`子句时,SQL引擎会按照出现的顺序依次检查每个条件,直到找到符合条件的为止。 ### 总结 通过对SQL中的CASE语句进行详细的介绍和实例分析,我们可以看到CASE语句的强大功能和灵活...

    MySQL排序中使用CASE WHEN的方法示例

    在MySQL中,`CASE WHEN` 是一个非常强大的表达式,常用于进行复杂的条件判断和排序。这个表达式允许我们在SQL查询中根据不同的条件执行不同的操作,例如改变字段的值或控制排序顺序。在本篇文章中,我们将深入探讨...

    mysqlCASEWHEN的基础和多种用法.pdf

    在搜索 CASE 函数中,按指定顺序计算每个 `Boolean_expression`,返回第一个为 TRUE 的 `Boolean_expression` 的 `result_expression`。如果所有 `Boolean_expression` 都不为 TRUE,返回 `else_result_expression`...

    VHDL本性语句与顺序语句的理解

    ### VHDL中的并行语句与顺序语句详解 #### 并行语句与顺序语句的概念 在VHDL编程语言中,并行语句与顺序语句是两种基本的控制结构,它们分别用于描述并发行为和顺序行为。正确理解和应用这两种语句对于设计高效的...

    SQL---行转列 详细描述

    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...

    oracle系列教程三+oracle复杂SQL语句.doc

    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,则返回表的注释或...

    常用的SQL语句~~

    - `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...

    Oracle Sql 性能优化

    CASE 表达式 WHEN THEN…比 CASE WHEN 表达式 THEN… 效率要高(没有验证过) 5、删除重复记录: 最高效的删除重复记录方法 ( 因为使用了ROWID)例子: DELETE FROM EMP E WHERE E.ROWID &gt; (SELECT MIN(X.ROWID) ...

    CASE表达式实现基于条件逻辑来返回一个值

    在数据库查询中,CASE表达式常被用来转换、分类或者解释数据,尤其是在需要根据某一列的值来决定输出何种信息时。下面我们将详细讨论CASE表达式的用法和应用场景。 1. **CASE表达式的基本结构** CASE表达式主要有两...

    数据库基础知识.docx

    本文将详细介绍数据库基础知识,包括SQL常用对象的整理、系统表的整理、获取列的基本信息、数据表列的整理、Case When基本语法、Covert Case区别、Exec与Exec()及Exec sp_executesql的使用、SqlServer执行顺序、...

    SQLServer数据库的查询和视图.ppt

    SELECT 学号, 姓名, 等级 = CASE WHEN 总学分 IS NULL THEN '尚未选课' WHEN 总学分 &lt; 50 THEN '不及格' WHEN 总学分 &gt;= 50 AND 总学分 &lt;= 52 THEN '合格' ELSE '优秀' END FROM xsb ``` 这将将 xsb 表中的总学分列...

    mysql面试题(4)

    WHEN condition1 THEN value1 WHEN condition2 THEN value2 ELSE default_value END WHERE condition; ``` 4. MySQL 数据分组和聚合 在 MySQL 中,可以使用`GROUP BY`语句将数据按照一个或多个列进行分组,并...

    SQLServer面试题

    order by Name, case Subject when '语文' then 1 when '数学' then 2 when '物理' then 3 end ``` 这条语句将 tb1 表中的数据合并为一个表,并将每个科目的成绩合并为一列。 五、union 和 union all 的区别 union...

    导出SQL server2005表字段信息说明

    (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...

    50个常用SQL语句,很好

    ,100 * SUM(CASE WHEN C# = '001' AND score &gt;= 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# ...

Global site tag (gtag.js) - Google Analytics