动态sql拼接
alter PROC 销售量在各省分布
@year int,@day int AS
SET NOCOUNT ON
DECLARE @STRSQL VARCHAR(MAX)
select t6.FName as 存货名称,t4.FName,t2.FConsignAmount,'' as 总计 into #TEMP from ICStockBill t1
inner join ICStockBillEntry t2 on t1.finterid = t2.FInterID
inner join t_Item t3 on t3.FItemID = t1.FSupplyID
inner join t_Item t4 on t4.FItemID = t3.FParentID
left join t_ICItem t6 on t2.fitemid = t6.fitemid --物料表
where t3.FNumber like '1.%'
SET @STRSQL = ''
SELECT @STRSQL = @STRSQL + 'SELECT 存货名称,总计'
SELECT @STRSQL = @STRSQL + 'sum(case when FNAME = '''+FName+''' then FConsignAmount else 0 end) as '''+FName+''', '
FROM (select distinct FName from #TEMP where FName <> '') as a order by FName
SELECT @STRSQL = left(@STRSQL,len(@STRSQL)-1) + 'FROM #TEMP GROUP BY 存货名称 '
SELECT @STRSQL = @STRSQL + 'UNION ALL
SELECT 存货名称,总计,'
SELECT @STRSQL = @STRSQL + 'sum(case when FNAME = 存货名称 then FConsignAmount else 0 end) as ''总计'', '
FROM (select distinct 存货名称 from #TEMP where 存货名称 <> '') as a order by 存货名称
SELECT @STRSQL = left(@STRSQL,len(@STRSQL)-1) + 'FROM #TEMP GROUP BY 总计 '
PRINT @STRSQL
EXEC (@STRSQL)
显示结果
存货名称 总计 A省.....B省...........................
错误提示:消息 195,级别 15,状态 10,第 1 行
'总计sum' 不是可以识别的 内置函数名称。
@year int,@day int AS
SET NOCOUNT ON
DECLARE @STRSQL VARCHAR(MAX)
select t6.FName as 存货名称,t4.FName,t2.FConsignAmount,'' as 总计 into #TEMP from ICStockBill t1
inner join ICStockBillEntry t2 on t1.finterid = t2.FInterID
inner join t_Item t3 on t3.FItemID = t1.FSupplyID
inner join t_Item t4 on t4.FItemID = t3.FParentID
left join t_ICItem t6 on t2.fitemid = t6.fitemid --物料表
where t3.FNumber like '1.%'
SET @STRSQL = ''
SELECT @STRSQL = @STRSQL + 'SELECT 存货名称,总计'
SELECT @STRSQL = @STRSQL + 'sum(case when FNAME = '''+FName+''' then FConsignAmount else 0 end) as '''+FName+''', '
FROM (select distinct FName from #TEMP where FName <> '') as a order by FName
SELECT @STRSQL = left(@STRSQL,len(@STRSQL)-1) + 'FROM #TEMP GROUP BY 存货名称 '
SELECT @STRSQL = @STRSQL + 'UNION ALL
SELECT 存货名称,总计,'
SELECT @STRSQL = @STRSQL + 'sum(case when FNAME = 存货名称 then FConsignAmount else 0 end) as ''总计'', '
FROM (select distinct 存货名称 from #TEMP where 存货名称 <> '') as a order by 存货名称
SELECT @STRSQL = left(@STRSQL,len(@STRSQL)-1) + 'FROM #TEMP GROUP BY 总计 '
PRINT @STRSQL
EXEC (@STRSQL)
显示结果
存货名称 总计 A省.....B省...........................
错误提示:消息 195,级别 15,状态 10,第 1 行
'总计sum' 不是可以识别的 内置函数名称。
...全文
相关推荐
MyBatis动态拼接SQL
在某些场景下,我们可能需要根据业务逻辑动态地拼接SQL语句,以实现更复杂的查询需求。这就是MyBatis动态SQL的功能所在。
Java如何使用Query动态拼接SQL详解
Java如何使用Query动态拼接SQL详解Java动态拼接SQL是指在Java中使用Query语言来动态地构建和执行SQL语句,从而实现灵活的数据查询和处理。
MyBatis 动态拼接Sql字符串的问题
在处理SQL时,动态SQL功能是MyBatis的一大亮点,它有效地解决了SQL字符串拼接的问题,避免了手动拼接带来的错误和复杂性。1.
动态拼接sql语句.rar
在易语言中,动态拼接SQL语句可以通过字符串连接操作实现,将需要的字段、表名、条件等动态组合成一个完整的SQL命令。
动态拼接sql语句工具类,拼接where后面语句
SqlBuilderUtil是一个高效的工具类,用于动态构建SQL查询的where子句。它支持多种数据类型和比较操作符,简化了SQL条件的拼接过程。通过buildCondition方法,用户可以传入参


