CASE WHEN...THEN...ELSE...END
多选择语句,当WHEN条件为true,取THEN后的值,否则取ELSE后的值,然后结束。
具体实例:
SET @orderBy = CASE WHEN ISNULL(@orderBy, '') = '' THEN ' ORDER BY AutoID DESC ' ELSE ' ORDER BY ' + @orderBy END
DECLARE
声明变量关键字,后面是变量名称、变量类型、变量长度,结构:DECLARE @VAR_NAME 类型
具体实例:
DECLARE @sql VARCHAR(MAX)
DECLARE @sql2 VARCHAR(500)
SET
给变量赋值,结构:SET @VAR_NAME 值
具体实例:
SET @orderBy =' ORDER BY AutoID DESC '
OFFSET ... ROWS FETCH NEXT ... ROWS ONLY
SQL Server中的分页语法,OFFSET指定了要跳过的行数,FETCH NEXT指定了要返回的行数
具体实例:
SET @sql = 'SELECT AutoID, PID, MOMID, cDepCode, iDate, fQty, cDeviceCode, EquipName, cTeam, cTeamName, dWorkCreateTime, cMemo, optTime, optUserID, optUserName, ProcessType, MOM_MainNo, cInvCode, cInvName, cInvStd, ProcedureCode, ProcedureName, bClose, cInvDefine8, cDefine8,IsHide,fQty,iSerialNo FROM dbo.V_Machining_Allocate_Detail WITH(NOLOCK) WHERE 1=1 ' + @sWhere + @orderBy + ' OFFSET ' + CONVERT(VARCHAR(10), (@PageIndex - 1)*@PageSize) + ' ROW FETCH NEXT ' + CONVERT(VARCHAR(10), @PageSize) + ' ROWS ONLY; '
-
CONVERT(VARCHAR(10), (@PageIndex - 1)*@PageSize): 计算要跳过的行数,@PageSize为每页显示的记录数,@PageIndex为当前页码,则(当前页码 - 1) * 每页记录数给出了要跳过多少行。 -
CONVERT(VARCHAR(10), @PageSize): 直接使用@PageSize作为要返回的行数,转化为字符串类型以便在SQL语句中使用。
INSERT INTO #cTmp
正在向一个本地临时表#cTmp中插入数据。本地临时表仅在当前会话中可见,并且当会话结束或者显式地使用DROP TABLE语句时会被删除。
INSERT INTO #cTmp (AutoID, PID, MOMID, cDepCode, iDate, fQty, cDeviceCode, EquipName, cTeam, cTeamName, dWorkCreateTime, cMemo, optTime, optUserID, optUserName, ProcessType, MOM_MainNo, cInvCode, cInvName, cInvStd, ProcedureCode, ProcedureName, bClose, cInvDefine8, cDefine8,IsHide,IssueQty,iSerialNo)
EXEC (@sql)
执行存储在变量@sql中的SQL语句或存储过程。
CREATE TABLE #cTmp
创建一张临时表,临时表名称cTmp,结构:CREATE TABLE #cTmp
BEGIN...END
表示一个事务或一组相关操作,确保所有的操作作为一个整体执行。
具体实例:
BEGIN
SELECT @IsHideRestQty = IsHideRestQty, @iSerialNo = iSerialNo FROM
(
SELECT ROW_NUMBER() OVER (ORDER BY iSerialNo ) AS RowNum, IsHideRestQty, iSerialNo FROM #data3
) AS t
WHERE t.RowNum = @index
UPDATE #data1 SET IsHideRestQty=@IsHideRestQty,isHide=1 WHERE iSerialNo>=@iSerialNo
SET @index = @index + 1
END
SELECT DISTINCT ...
去除重复的行,结构:SELECT DISTINCT 字段1,字段2,字段3
具体实例:
SELECT DISTINCT CASE WHEN #cTmp.RestQty=0 THEN 0 ELSE #cTmp.preQty- data1.IssueQtySum END RestQtyNew , #cTmp.*
INTO #cTmp2
FROM #cTmp JOIN data1 ON #cTmp.pid = data1.pid ;
SELECT DISTINCT ... INTO ... FROM ...
从一张表中取出去重后的数据,然后存入另一张表中。
具体实例:
SELECT DISTINCT CASE WHEN #cTmp.RestQty=0 THEN 0 ELSE #cTmp.preQty- data1.IssueQtySum END RestQtyNew , #cTmp.*
INTO #cTmp2
FROM #cTmp JOIN data1 ON #cTmp.pid = data1.pid ;
当前文章价值6.18元,扫一扫支付后添加微信提供帮助!(如不能解决您的问题,可以申请退款)

评论已关闭!