生成包含可用数据的标志

时间:2017-11-02 19:51:54

标签: sql sql-server tsql

我有一个包含以下内容的表,尝试添加一个额外的列/标志,只给出两个值(0或1)的数据。图片显示了预期的结果。谢谢提前

--drop table #test 

create table #TEST (SERIAL VARCHAR(10),  DESCR VARCHAR(10)  )
  INSERT INTO #TEST
      VALUES ('12345' ,'TEST') , ('16782' ,'TEST1') ,
             ('46729' ,'TEST3'), ('82791' ,'TEST3'),
             ('72865' ,'TEST5')

预期结果

enter image description here

2 个答案:

答案 0 :(得分:1)

如果您正在尝试创建表格,可以使用:

CREATE TABLE #TEST (SERIAL VARCHAR(10),  DESCR VARCHAR(10), FLAG BIT  )
INSERT INTO #TEST   VALUES ('12345' ,'TEST', 0) ,
                           ('16782' ,'TEST1', 1) ,
                           ('46729' ,'TEST3', 0),
                           ('82791' ,'TEST3', 1),
                           ('72865' ,'TEST5' 0)

如果要在创建表后更新表,可以使用

ALTER TABLE #TEST ADD Flag BIT
UPDATE TABLE SET Flag = 0 WHERE SERIAL IN (12345, 46729, 72865)
UPDATE TABLE SET Flag = 1 WHERE SERIAL IN (16782, 82791)

答案 1 :(得分:0)

如果你只想要半个0和一半,你可以这样做:

select t.*,
       (row_number() over (order by (select null)) % 2 as flag
from #test;

这将使任意一半的行的值为1,另一半的值为0。