2012-04-27 3 views
0

У меня есть одна таблица со списком типов данных bit. Если два из этих атрибутов, мы будем называть их attrib1 и attrib2 являются ОБА = 1, я хотел бы для одного столбца в запросе будет выводиться как 1.Два двоичных атрибута для вывода в одном столбце

Если ОБА из них 0, я хотел бы объединение первого результата установлен второй, где, если оба из атрибутов равны 0, один столбец будет выводиться с 0

так

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

мне нужно это заявление для вывода в одном столбце с «1» ТОЛЬКО, если дела верны.

ответ

1

Вам нужно в Bitwise Exclusive OR (^) ГДЕ положение так, что только те строки, в которых обе колонки attrib1 или attrib2 имеют либо или выбраны. В 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 attribute1 attribute2 где attribute1 и атрибут 2 имеют только '1s' Мне нужен столбец псевдонимов, скажем, attrib1_2. Я планирую объединить этот результат с теми, которые равны 0 – wootscootinboogie

Смежные вопросы