Sql 查询以从多个行和列中获取零值

Sql 查询以从多个行和列中获取零值,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我有以下数据。如何查询以仅从所有行和列中获取零 Timestamp C1 C2 C3 C4 2012-05-17 1 0 1 0 2012-05-18 0 0 1 0 2012-05-19 1 0 0 1 2012-05-20 0 0 0 0 2012-05-21 0 1 0 0 输出应包含带有0值的时间戳c1、c2、c3、c4。请帮忙 我的原始数据如下 Timestamp TF TA TRIM DG 17-05-2012 0 0.02

我有以下数据。如何查询以仅从所有行和列中获取零

Timestamp  C1 C2 C3 C4
2012-05-17 1  0  1  0
2012-05-18 0  0  1  0
2012-05-19 1  0  0  1
2012-05-20 0  0  0  0
2012-05-21 0  1  0  0
输出应包含带有0值的时间戳c1、c2、c3、c4。请帮忙

我的原始数据如下

Timestamp   TF  TA  TRIM    DG
17-05-2012  0   0.02    0   0.922
18-05-2012  0   0.03    0   0.831787611
19-05-2012  0.8 0.037   0   0.317744455
20-05-2012  0.9 0.06    0   0.56
21-05-2012  0   0.05    0   0.528702213
22-05-2012  0   0.078   0   0.428219784
23-05-2012  0   0.027   0   0.391674726
24-05-2012  0   0.09    0   0.826398887
我尝试了下面的查询

select timestamp,TF,TA,DG from temp where TF=0 and TF=0 and DG=0
但是我得到的是没有行和列的空输出。我希望看到所有具有0作为时间戳值的列

SELECT * FROM {table} where C1 = 0 and  C2 = 0 and C3= 0 and  C4= 0
如果我没弄错你的问题


假设您的查询有输入错误,您实际上想检查TF旁边的其他列两次。你能把桌子上的示意图贴出来吗?听上去,您可能不是在处理十进制或某些数字类型。

只需将条件放在where子句中即可

select * from table_name where  C1=0 or C2=0 or C3=0 or C4=0;
使用此查询:

select timestamp,c1,c2,c3,c4
from table
where (c1 = 0 and c2 = 0 and c3 = 0 and c4 =0)

我想你正在寻找这个:

SELECT * FROM <tablename> where C1 = 0 OR C2 = 0 OR C3= 0 OR C4= 0;
选择*其中C1=0或C2=0或C3=0或C4=0;
编辑-根据你的评论,我认为这将工作

SELECT [Timestamp], 
CASE WHEN TF>0 THEN 0 ELSE TF END AS TF,
CASE WHEN TA>0 THEN 0 ELSE TA END AS TA,
CASE WHEN DG>0 THEN 0 ELSE DG END AS DG
FROM <yourtable>
WHERE TF=0 OR TA=0 OR DG=0
选择[时间戳],
当TF>0时,则为0,否则TF结束为TF,
当TA>0时,则为0,否则TA终止为TA,
当DG>0时,则为0,否则DG结束为DG
从…起
其中TF=0或TA=0或DG=0
然而,这个要求的逻辑超出了我的理解


Raj

我假设您希望非零值向上舍入:

select timestamp
    ,ceiling(tf) as c1
    ,ceiling(ta) as c2
    ,ceiling(trim) as c3
    ,ceiling(dg) as c4  
from table 
where tf=0 or ta=0 or trim=0 or dg=0


预期的输出是什么?我需要时间戳,C1,C2,C3,C4列的值为0。您已经尝试了什么?是否希望C1,C2,C3,C4值均为零的行?@Reyaz:请编辑问题并显示示例的结果集,就像这样,我不理解这个问题。嗨,Ajith,我用我的数据尝试了相同的查询(在我的问题中更新了原始数据)但我没有得到任何输出。;我没有得到任何空值,只有列名称。这是因为所有列不同时具有0。如果您希望其中任何一列具有0,则使用或而不是AND。是的,我使用了它,但我得到了0.0246值,因为我只期望0值。请如何操作?正在尝试对您的值进行四舍五入,并将其转换为geo/p你能提供你想要的样本数据作为o/p吗?不,我不想舍入这些值。我需要为所有带有时间戳的列找到唯一的0值。不应考虑0.xx。请帮助提供更好的答案,你应该用几句话来解释。OP似乎在正确使用列方面有问题。我想要要查询所有带有时间戳的列的值,例如我期望的样本输出,请参见下文。我不包括excat值。时间戳TF TA TRIM DG 17-05-2012 0 0 0 0 0 18-05-2012 0 0 0 0 19-05-2012 0 0 0 0 0如果您的列是数字列,您就是我们如果使用SQL-SERVER,则查询将输出TF、TA、TRIM和DG列中只有0的行。要么您正在尝试不同的内容,但不知道如何提问,要么您在耍花招。抱歉,我把您弄糊涂了。我有30000行的巨大数据,其中包含十进制值,包括(0、0.2、1、1.789、1.6879等)。我需要一个查询来找到所有带有时间戳的列的所有0的位置。零值不是连续的,它可以在任何地方。现在清楚了吗?好的,我做了一个测试,检查这个链接。告诉我它有什么问题??注意,它不是时间戳,它是varchar,因为我想获取您的数据,而不是输入时的当前时间。使用这个我也得到了0和0.045,0.4,0.9的值。但我只需要0。如何实现这一点?请发布一个您希望看到的示例输出。Hi raj,我需要的是只有0的值,而不是0.0X或0.X(不应四舍五入)。我需要这样的输出。下面不是真实数据,但这是一个示例时间戳TF TA TRIM DG 17-05-2012 0 0 0 0 0 0 18-05-2012 0 0 0 0 0 0 19-05-2012 0 0 0 0 0 0 0 0 0 0 0抱歉,我不希望非零值被舍入。我只需要数据中的零值,数据也有非零值,小数点为0.9,0.8左右我的输出也不应该包含这些0.9和0.8,我只需要数据中的零值