Sql 查询中的联合字段

Sql 查询中的联合字段,sql,firebird,Sql,Firebird,我有一个带有字段A1、A2、A3、A4、B1、B2、B3和B4的表。我需要一个select语句来表示联合字段:C1中的A1和B1,C2中的A2和B2,C3中的A3和B3,C4中的A4和B4 例如: TABLE ONE A1 A2 A3 A4 B1 B2 B3 B4 1 1 1 1 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 3 3 3 3 我需要这样的结果: TABLE TWO C1 C2 C3 C4 1 1

我有一个带有字段A1、A2、A3、A4、B1、B2、B3和B4的表。我需要一个select语句来表示联合字段:C1中的A1和B1,C2中的A2和B2,C3中的A3和B3,C4中的A4和B4

例如:

 TABLE ONE
 A1 A2 A3 A4 B1 B2 B3 B4
 1  1  1  1  0  0  0  0
 2  2  2  2  0  0  0  0
 0  0  0  0  3  3  3  3 
我需要这样的结果:

 TABLE TWO
 C1 C2 C3 C4 
 1  1  1  1
 2  2  2  2 
 3  3  3  3

你需要这样的东西

select A1, A2, A3, A4 
from yourtable where a1+a2+a3+a4 > 0 
union all 
select B1, B2, B3, B4 
from yourtable where b1+b2+b3+b4 > 0
应该很简单,比如:

SELECT A1 AS C1
      ,A2 AS C2
      ,A3 AS C3
      ,A4 AS C4
  FROM table_one
 WHERE A1 != 0 
   AND A2 != 0
   AND A3 != 0
   AND A4 != 0
UNION ALL 
SELECT B1 AS C1
      ,B2 AS C2
      ,B3 AS C3
      ,B4 AS C4
  FROM table_two
 WHERE B1 != 0 
   AND B2 != 0
   AND B3 != 0
   AND B4 != 0

如果A1=1和B1=1,或者A1=1和B1=2,或者对于1,0,1,0,1,0,1,0,或者1,0,1,0,0,1,0,1,会有什么结果呢?想想看,对于0,0,0,0,0,0,0,0和1,1,1,1,1,1,1,1,我觉得几乎所有告诉你的事情,你的数据结构都很奇怪,没有放大,只会导致越来越多的问题。从…开始。也许您应该重新考虑结构本身?谢谢Mark的建议。在我的例子中,如果字段a1..a4的值为0,则b1..b4的值为0,如果b1..b4的值为0,则a1..a4的值为0。这不会产生预期的结果,因为它会引入值为0、0、0的行,其中0.3个带有样本data@MarkRotteveel我已经添加了where clausenow make A1=-1000,而该行将根本不显示:-D