T-SQL生成包含多个布尔列的表格报告

时间:2014-12-29 09:33:33

标签: sql-server sql-server-2000

我有一张这样的表,

ID, 
CrateName,
CompanyName,
IncludeMango,
IncludeFruit,
IncludeThis,
IncludeThat,
DateTimeHero

现在,我希望获得每个布尔数据类型列有多少列的报告以及有多少列为false,就像报告一样,而不会在其他列中获取实际数据。

不知道从哪里开始:/

1 个答案:

答案 0 :(得分:0)

好吧,您可以从系统表中获取表格的位列名称,如下所示:

select C.name 
from sys.columns as C
    inner join sys.tables as T on T.[object_id] = C.[object_id]
    inner join sys.types as TT on TT.system_type_id = C.system_type_id
where 
    T.name = 'Your_Table_Name'
    and TT.name = 'bit'

当您获得列名称时 - 您可以构建动态查询并检查 - 您需要的每列中有多少行的值为1 - 然后与总行数进行比较。

简单地说(但根据你的专栏名称它应该是动态的):

select 
    case 
        when sum(cast(Column_Name_X as bigint)) = count(*) 
        then 1 
        else 0 
    end as Column_Name_X 
from Your_Table