动态拼接SQL计算公式

 1 --模拟数据
 2 IF OBJECT_ID(‘tempdb..#t‘)>0 DROP TABLE #t
 3 SELECT * INTO #t
 4 FROM (
 5 SELECT ‘1‘ id,2030 g,265 h, 830 k,‘g*h+h*k‘ gs,0 tt
 6 UNION ALL
 7 SELECT ‘2‘ id,2030 g,0 h, 0 k,‘g*4‘ gs,0 tt
 8 UNION ALL
 9 SELECT ‘3‘ id,2030 g,265 h, 0 k,‘(g+h)*2‘ gs,0 tt
10 UNION ALL
11 SELECT ‘4‘ id,2030 g,265 h, 0 k,‘(g+h)*2‘ gs,0 tt)t
12 --原始数据
13 SELECT * FROM #t
14
15 --变量
16 DECLARE @i int,@n INT
17 DECLARE @gs VARCHAR(50)
18 DECLARE @sql VARCHAR(MAX)
19
20 --按公式类别分类
21 IF OBJECT_ID(‘tempdb..#tt‘)>0 DROP TABLE #tt
22 SELECT ROW_NUMBER()OVER(ORDER BY gs)rowid
23 ,gs
24 INTO #tt
25 FROM #t
26 GROUP BY gs
27
28 --按公式类别遍历
29 SELECT @i=MIN(rowid),@n=MAX(rowid) FROM #tt
30 WHILE(@i<=@n)
31 BEGIN
32 SELECT @gs=gs FROM #tt WHERE rowid=@i
33 SET @sql=‘update #t set tt=‘+@gs+‘ where gs=‘‘‘+@gs+‘‘‘‘--生成脚本
34 EXEC(@sql)--执行脚本,可以print看效果
35 SET @i=@i+1
36 END
37 --处理后效果
38 SELECT * FROM #t

效果预览:

动态拼接SQL计算公式,布布扣,bubuko.com

时间: 2024-10-27 12:12:18

动态拼接SQL计算公式的相关文章

mybatis-使用if动态拼接sql

一.创建项目和数据库    项目名称:mybatis092901    数据库名称:mybatis0929        表名称:dept        CREATE TABLE `dept` (          `deptNo` int(11) NOT NULL,          `deptName` varchar(30) DEFAULT NULL,          `location` varchar(30) DEFAULT NULL,          PRIMARY KEY (`

java动态拼接sql语句并且执行时给sql语句的参数赋值

问题 在这里举一个例子,比如我要做一个多条件模糊查询,用户输入的时候有可能输入一个条件,也有可能输入两个条件,这时执行查询的sql语句就不确定了,但可以用动态拼接sql语句来解决这个问题. 解决方法 1.就拿我上面的那个多条件模糊查询为例,第一步是拼接sql语句,先定义一个通用的sql语句,String sql = "select * from user where 1 = 1 ";这里添加where 1= 1是一个小技巧,方便后面sql语句的拼接. String sql = &quo

mysql 存储过程动态拼接sql并执行赋值

CREATE DEFINER = CURRENT_USER PROCEDURE `NewProc`(in _xnb varchar(50)) BEGIN ## 定义变量 DECLARE _num FLOAT(14,6) DEFAULT 0; ## @表示全局变量 相当于php $ ## 拼接赋值 INTO 必须要用全局变量不然语句会报错 SET @strsql = CONCAT('SELECT SUM(',_xnb,') INTO @tnum FROM btc_user_coin'); ## 预

动态拼接SQL语句

1.参考官方文档 ? if:字符判断 ? choose (when, otherwise):分支选择 ? trim (where, set):字符串截取:其中where标签封装查询条件,set标签封装修改条件 ? foreach 2.if案例 1)在EmployeeMapper接口中添加一个方法: //携带了哪个字段,查询条件就带上哪个字段的值 public List<Employee> getEmployeeByConditionIf(Employee employee); 2).如果要写下

mybatis-使用where动态拼接sql

一.创建项目和数据库    项目名称:mybatis092901    数据库名称:mybatis0929        表名称:dept        CREATE TABLE `dept` (          `deptNo` int(11) NOT NULL,          `deptName` varchar(30) DEFAULT NULL,          `location` varchar(30) DEFAULT NULL,          PRIMARY KEY (`

mybatis if test 相等的情况如何动态拼接sql

今天程序需要根据前台的传过来的状态判断在数据库里是取 where a>b 还是 a<b 还是 a=0 的情况  搞了一下午最后试了下 在if 里面拼接  #{status}=#{status}  一切ok了 详细代码如下 <if test=" status==1"> and inv.security_inventory < inv.actual_inventory and #{status} = #{status} </if> <if t

动态拼接SQL 语句

public T Get<T>(int id) { Type type = typeof(T); string columnStrings = string.Join(",", type.GetProperties().Select(p=>string.Format("[{0}]"))); string sql = string.Format("select {0} from [{1}] where id={2}", colum

SQL 动态拼接SQL 语句

USE [PMS_UnifiedDB_15] GO /****** Object: StoredProcedure [dbo].[SP_GetLogInfo] Script Date: 2/11/2015 3:04:13 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <Author,,Name> --

mysql动态拼接sql语句

begin /**procedure body**/if(m_parameter='') thenset @sqlStr=concat('select id,title,description,msg,logo,notice,views,grade,commenttimes from kmb01',' order by ',m_sort,' ',m_sortType,' limit ',m_index,',',m_length); elseset @sqlStr=concat('select i