Sql 如何为表中的每一列指定1或0?
我有一个名为Sql 如何为表中的每一列指定1或0?,sql,sql-server,Sql,Sql Server,我有一个名为Person的表,有15列。根据事件ID,将使用某些列,而不使用某些列。例如,5的事件ID将使用名称、地址和电话列。同时,10的EventId将使用Name和Email列 我想我必须用EventId创建一个表,并以某种方式输入1或0,以知道特定事件应该包含哪些列。然而,我不知道如何将所有这些联系在一起并使其发挥作用 我正在使用SQL Server create table #test (EventID varchar(max), Name varchar(max), [Addres
Person
的表,有15列。根据事件ID
,将使用某些列,而不使用某些列。例如,5的事件ID将使用名称
、地址
和电话
列。同时,10的EventId
将使用Name
和Email
列
我想我必须用EventId
创建一个表,并以某种方式输入1或0,以知道特定事件应该包含哪些列。然而,我不知道如何将所有这些联系在一起并使其发挥作用
我正在使用SQL Server
create table #test (EventID varchar(max), Name varchar(max), [Address] varchar(max), [Phone] varchar(max))
insert into #test
values ('1','Abc','gabanes adfga','1521623612'),
('3','adz','gabwega abae' ,'1521623612'),
('5','qqb','asdhahn ansxeh','1521623612'),
('5','qas','smystrj sthshs','1521623612'),
('2','qar','sthtr sthsht ','1521623612'),
('1','qha','msgnsn abawe ','1521623612')
; with cte as
(
select *, case when EventID = 5 then 1 else 0 end as Flag from #test
)
select Name, [Address], Phone from cte
where flag = 1
;with cte1
as ( select *, case when EventID = 5 then 1 else 0 end as Flag from #test )
select Name, Phone from cte1
where flag != 1
我随机命名了这些列,只是将垃圾数据放入字段中。然而,希望这有助于实现你的目标 能否添加一些示例数据,并指定0或1个值?顺便说一句,存储从其他列计算的值通常不是一个好主意,如果这样做,数据不一致是一个常见问题。(使用触发器、视图或“计算列”。)您还可以为每个项目设置一行(例如,5+名称和5+地址),因此您不需要为每个项目设置单独的列,只存储带有“1”的列,缺少的列将为“0”,但这只是一个意见问题,取决于您的数据/用例tooJamesZ,那太好了。我将如何为您所说的每一项创建这一行?这里是一个开始获得您问题答案的好地方。