我有一张这样的表,
ID,
CrateName,
CompanyName,
IncludeMango,
IncludeFruit,
IncludeThis,
IncludeThat,
DateTimeHero
现在,我希望获得每个布尔数据类型列有多少列的报告以及有多少列为false,就像报告一样,而不会在其他列中获取实际数据。
不知道从哪里开始:/
答案 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