我怎麼能聚集一些元組這樣如何聚合布爾列
COL_1 | COL_2 | COL_3 | COL_4
val | T | F | F
val | F | T | F
與OR功能,如下表返回?
COL_1 | COL_2 | COL_3 | COL_4
val | T | T | F
我怎麼能聚集一些元組這樣如何聚合布爾列
COL_1 | COL_2 | COL_3 | COL_4
val | T | F | F
val | F | T | F
與OR功能,如下表返回?
COL_1 | COL_2 | COL_3 | COL_4
val | T | T | F
只需做一個GROUP BY
,使用MAX()
如果有返回T,否則F.
select col_1, max(col_2), max(col_3), max(col_4)
from tablename
group by col_1
如果COL_2
到COL_4
是文本列(char
,varchar
,varchar2
,nvarchar
,nvarchar2
)含'T'
或'F'
,那麼你可以採取MAX
其中,因爲'T' > 'F'
,即'T'
後來r按照詞彙順序編號爲'F'
。
SELECT COL_1, MAX(COL_2) AS COL_2, MAX(COL_3) AS COL_3, MAX(COL_4) AS COL_4
FROM table
GROUP BY COL_1
說明:如果至少有一個操作數爲TRUE,則LOC返回TRUE。如果至少有一個值爲"T"
,否則MAX()返回"T"
,否則返回"F"
。
注:如果布爾列被聲明爲
COL_x NUMBER(1) DEFAULT 0 NOT NULL
或任何其他數字類型,那麼我將採取MAX(ABS(col_x))
,因爲負值算作也是如此。 (如果你有一個連接到布爾組合框的訪問前端,它產生的價值0
或-1
。)
SELECT COL1 = MAX(CONVERT(TINYINT,ISNULL(col1,0)))...
正如一個側面說明(不用於Oracle):在PostgreSQL,你可以這樣做:
select col_1, bool_or(col_2), bool_or(col_3), bool_or(col_4)
from tablename group by col_1 order by col_1
你能解釋一下這個回答一些? – Forklift