如何查看列是否曾经有值

时间:2019-05-13 19:28:14

标签: sql sql-server

我有一个具有visitstartimevisitendtime列的代理机构表(即使说是日期字段,这些字段也是varchar(50)。没有NULLS)我想了解代理商是否从未访问过。 如果我这样做:

SELECT * FROM AGENCY WHERE visitstartime = ' ' and visitendtime = ' '

它仅返回空白的RECORDS,但是同一家代理商可以进行“访问”并填充字段。我怎么能看到完全没有访问的代理商。

2 个答案:

答案 0 :(得分:0)

像表这样的声音应该称为“访问”而不是“代理”,但是我想您已经注意到了一些设计问题(例如数据类型)。无论如何,对于您的问题,您可以使用类似的东西:

SELECT * 
FROM    AGENCY as ag
WHERE NOT EXISTS (SELECT NULL
                  FROM  AGENCY as ag2
                  WHERE ag2.Agencyid = ag.Agencyid
                   AND ag2.visitstartime <> '' 
                   AND ag2.visitendtime  <> ''
                ) 

答案 1 :(得分:0)

您可以使用聚合:

SELECT AgencyId
FROM AGENCY 
GROUP BY AgencyId
HAVING MAX(visitstartime) = ' ' AND
       MAX(visitendtime) = ' ';

您似乎将日期/时间值存储为字符串。我强烈建议您更改数据结构以使用适当的本机日期/时间类型。