2017-03-16 44 views
-1

我有一列我标志两个值(0和1)。我如何从表中选择所有,但只计算标志列中的值1?如何计算列中的值?

SQL服务器

+0

'COUNT(CASE WHEN标志=则1 END)'这应该工作 – Stephen

+1

你想要返回什么?只有1的数量? – RexMaison

+0

真的有助于查看示例数据和预期结果来确认您的问题....也许您希望表格中所有记录的所有1个标志的总数,但在每条记录上显示该总数? (*)FROM your_table WHERE flag = 1 SELECT COUNT(*)FROM your_table WHERE flag = 1 SELECT * *,sum(flag)over(partition by null)as SumTotalOfFlag FROM Table A' – xQbert

回答

0

不太知道我理解的问题,但不会是这样的:

SELECT * FROM your_table WHERE flag = 1 
+0

或者如果您确实需要计数, –

0

犯错,你问如何执行一个简单的SELECT语句,还是我失去了东西... 这样的?

SELECT * 
FROM [YourTableName] 
WHERE FlagColumnName = 1 
0

这应该这样做

Select count(0) 
from YourTableName 
where ValueField = 1 
1

你需要一个COUNTCASE表达式,像这样:

COUNT(CASE WHEN flag = 1 then 1 END) 
0

我想,你的意思是这样的:

SELECT COUNT(*) FROM [YOUR_TABLE] WHERE [FLAGCOLUMN] = 1; 
1

如果你想返回所有的价值观,也有(使用选逻辑的),你可以使用使用over像这样的窗口功能聚集的总计数:1

select 
    t.* 
    , count(case when flag = 1 then 1 end) over(partition by 1) as flag_1_count 
from t