Sql server 如何将所有列合并为一列
我将三个表合并到一个表中,我注意到每个合并的表都有相似的数据列,从而产生冗余 将所有这些列更新为一列的最佳方式是什么 现在数据将被读取Sql server 如何将所有列合并为一列,sql-server,tsql,Sql Server,Tsql,我将三个表合并到一个表中,我注意到每个合并的表都有相似的数据列,从而产生冗余 将所有这些列更新为一列的最佳方式是什么 现在数据将被读取 WallJambHeadCut | WallJambSillCut | DoorJambSillCut | DoorJambHeadCut | ect .... 1 0 0 0 0 0
WallJambHeadCut | WallJambSillCut | DoorJambSillCut | DoorJambHeadCut | ect ....
1 0 0 0
0 0 1 0
以上内容需要浓缩成两列:
Headcut | SillCut
换句话说,这些列中的每一列都可以压缩成一列。我只是想确保我写了正确的update语句,因为我不喜欢把我的数据插起来
CREATE TABLE [dbo].[Table_1](
[ID] [int] IDENTITY(1,1) NOT NULL,
[WallJambHeadCut] [bit] NOT NULL,
[WallJambSillCut] [bit] NOT NULL,
[DoorJambSillCut] [bit] NOT NULL,
[DoorJambHeadCut] [bit] NOT NULL,
[VerticalHeadCut] [bit] NOT NULL,
[VerticalSillCut] [bit] NOT NULL,
CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
根据需要执行的复杂性,可以将所有列替换为tinyint类型的列,并执行按位操作来处理数据。实际上,我们在我正在做的项目中就是这么做的 对于你给出的例子,你将
0000 1000 --Which is 8
0000 0010 --Which is 2
每当需要更新这些值时,只需使用运算符
你可以在这里查看更多信息
tinyint更好,因为它只占用8位
Cheers在int类型的列上创建,并使用位操作存储/读取/更新数据。例如,第一位用于col1,第二位用于col2,第三位用于col3等(假设每列只有两种可能性)。您能从这个查询中得到想要的吗
select Headcut,Sillcut from (
select [WallJambHeadCut] as Headcut,[WallJambSillCut] as Sillcut from table_1
union all
select [DoorJambHeadCut] as Headcut,[DoorJambSillCut] as Sillcut from table_1
union all
select [VerticalHeadCut] as Headcut),[VerticalSillCut] as Sillcut from table_1
) a
我甚至都没想过要。。。谢谢大家。