2012-04-27 69 views
0

我有一個包含bit數據類型列表的單個表。如果其中的兩個屬性,我們稱之爲attrib1attrib2都是BOTH = 1,我想查詢中的單個列輸出爲1.要在一列中輸出的兩個二進制屬性

如果它們都是0,我想聯盟的第一個結果設置爲第二個,其中,如果這兩個屬性是0,一列是輸出與0

所以

SELECT attrib1, attrib2 
FROM myTable 
WHERE (attrib1 = 1) AND (attrib2 = 1) 

我需要聲明輸出與一列只有在案例屬實的情況下,纔可以使用'1'。

回答

1

需要在一個Bitwise Exclusive OR (^) WHERE使得只有行,其中兩個柱attrib1attrib2要麼或被選擇子句。在SELECT,你需要使用Bitwise And (&)顯示如果兩列有或顯示如果兩列有。

腳本:

CREATE TABLE dbo.myTable 
(
     id  int NOT NULL IDENTITY 
    , attrib1 bit NOT NULL 
    , attrib2 bit NOT NULL 
); 

INSERT INTO dbo.myTable (attrib1, attrib2) VALUES 
    (1, 1), 
    (0, 1), 
    (1, 0), 
    (0, 0); 

SELECT id 
    , attrib1 & attrib2 AS attrib1_2 
FROM dbo.myTable 
WHERE (attrib1^attrib2 = 0); 

結果將是:

id attrib1_2 
-- --------- 
1  1 
4  0 
+0

因此,一個ID也被包括在這一着呢,而不是查詢結果返回ID ATTRIBUTE1 attribute2其中ATTRIBUTE1和屬性2只'1s'我想要一個名爲attrib1_2的別名列。我計劃與那些都是0的結果相結合 – wootscootinboogie 2012-04-27 20:12:52