Sql server SQL数据分析过程
我试图在SQL中执行一个过程,其中我有一个表,例如: 以前 记录|设置日期| A | B | C | D |总计|列ID 巴德| 20180320 | 0 | 6 | 3 | 0 | 9 BAV | 20180320 | 0 | 0 | 1 | 0 | 1 我想分析每一行,并根据列中的条目执行操作。因此,对于记录“BAD”,我想检查每列上的值。在这种情况下,列A=0因此移动到下一列。因此,对于B=6列,我需要在那里创建插入新行,拆分原始行,以便插入新行: 记录|设置日期| A | B | C | D |总计|列ID 巴德| 20180320 | 0 | 6 | 0 | 0 | 9 | B 这样做的最终结果如下所示: 最终结果 记录|设置日期| A | B | C | D |总计|列ID 巴德| 20180320 | 0 | 6 | 0 | 0 | 9 | B 巴德| 20180320 | 0 | 0 | 3 | 0 | 3 | C BAV | 20180320 | 0 | 0 | 1 | 0 | 1 | C 密码:Sql server SQL数据分析过程,sql-server,database,Sql Server,Database,我试图在SQL中执行一个过程,其中我有一个表,例如: 以前 记录|设置日期| A | B | C | D |总计|列ID 巴德| 20180320 | 0 | 6 | 3 | 0 | 9 BAV | 20180320 | 0 | 0 | 1 | 0 | 1 我想分析每一行,并根据列中的条目执行操作。因此,对于记录“BAD”,我想检查每列上的值。在这种情况下,列A=0因此移动到下一列。因此,对于B=6列,我需要在那里创建插入新行,拆分原始行,以便插入新行: 记录|设置日期| A | B | C |
for rows = 1 to x
x = #rows in table
set rows = 1
for col = 1 to Ubound(col)
if val <> 0 then
INSERT NEW ROW ( ROW with column entries set to zero expect populated
row) AND columnid = non-zero row.
else
end if
next col
next row
end
删除原始行-在这种情况下,将行拆分为两行。相反,如果列固定为A、B、C和D,则可以进入循环 做一些下面提到的额外编码
INSERT INTO New_Row(RECORD,SETDATE,A,B,C,D,TOTAL,COLUMNID)
SELECT RECORD,SETDATE,A,0,0,0,A,'A'
FROM Your_Table
WHERE A<>0
INSERT INTO New_Row(RECORD,SETDATE,A,B,C,D,TOTAL,COLUMNID)
SELECT RECORD,SETDATE,0,B,0,0,B,'B'
FROM Your_Table
WHERE B<>0
INSERT INTO New_Row(RECORD,SETDATE,A,B,C,D,TOTAL,COLUMNID)
SELECT RECORD,SETDATE,0,0,C,0,C,'C'
FROM Your_Table
WHERE C<>0
INSERT INTO New_Row(RECORD,SETDATE,A,B,C,D,TOTAL,COLUMNID)
SELECT RECORD,SETDATE,0,0,0,D,D,'D'
FROM Your_Table
WHERE D<>0
嘿,谢谢shiv的建议,这解决了我想要实现的问题。非常感谢。过程代码是高度特定于供应商的-因此请添加一个标记来指定您使用的是mysql、postgresql、sql server、oracle还是db2-还是完全其他的。@marc_s我使用的是mssql,我是这方面的新手,但下面的建议可以解决我的问题。第一课:官方产品名称是SQL Server,而不是mssql或ms SQL之类的。当你提到这个产品时,你应该使用这个官方名称,不要用mysql标记,这是不同的RDBMS,而不是SQL Server。。。。。