Sql server 2012 如何在SQL中的两个独立表上打印奇数和偶数?
在我的SQL代码中,我已经做到了这一点。我正在努力让我的数据按照奇数和偶数打印在两个单独的表格中。提前感谢您的投入。我真的很感激Sql server 2012 如何在SQL中的两个独立表上打印奇数和偶数?,sql-server-2012,modulus,Sql Server 2012,Modulus,在我的SQL代码中,我已经做到了这一点。我正在努力让我的数据按照奇数和偶数打印在两个单独的表格中。提前感谢您的投入。我真的很感激 DECLARE @empNM CHAR(15), @empID INT, @reportsTO INT DECLARE emp CURSOR dynamic FOR SELECT Employee_NM, Employee_ID, ReportsTo FROM employeetable ORDER BY Employee_ID AS
DECLARE
@empNM CHAR(15),
@empID INT,
@reportsTO INT
DECLARE
emp CURSOR dynamic FOR
SELECT Employee_NM, Employee_ID, ReportsTo
FROM employeetable
ORDER BY Employee_ID ASC
OPEN emp
FETCH NEXT
FROM emp
INTO @empNM, @empID, @reportsTO;
PRINT 'name id boss'
WHILE (@@fetch_status <> -1)
IF (@empID % 2 = 0)
BEGIN
SET @empNM = CONVERT(CHAR,CAST(@empNM AS VARCHAR),1)
PRINT CAST(@empNM AS VARCHAR)+CAST(@empID AS VARCHAR)+SPACE(11)+CAST(@reportsTO AS varCHAR)
FETCH NEXT
FROM emp
INTO @empNM, @empID, @reportsTO;
END;
ELSE
BEGIN
SET @empNM = CONVERT(CHAR,CAST(@empNM AS VARCHAR),1)
PRINT CAST(@empNM AS VARCHAR)+CAST(@empID AS VARCHAR)+SPACE(11)+CAST(@reportsTO AS varCHAR)
FETCH NEXT
FROM emp
INTO @empNM, @empID, @reportsTO;
END;
CLOSE emp;
DEALLOCATE emp;
这是期望的结果
您没有在数据中使用C循环。使用SQL,您必须处理整个数据集,因此没有游标。在大多数情况下 必须为每个表执行1次插入:
Insert Into TOdd(Name, Id, Boss) Select Name, Id, Boss From T Where id % 2 = 1
Insert Into TEven(Name, Id, Boss) Select Name, Id, Boss From T Where id % 2 = 0
请参阅SQL Fiddle:在查询本身的后面使用。然后可以删除所有丑陋的光标/程序代码;和直接返回的一个或多个结果集。游标应该是“最后的努力”,通常是在需要立即应用结果集时,我怀疑这里的情况是否如此。