我有一个包含以下内容的表,尝试添加一个额外的列/标志,只给出两个值(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')
预期结果
答案 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。