Sql 如何检查联接表中的所有POST在列中的值是否相同?

Sql 如何检查联接表中的所有POST在列中的值是否相同?,sql,visual-studio,sql-server-2008-r2,business-intelligence,Sql,Visual Studio,Sql Server 2008 R2,Business Intelligence,我正在为一个涉及1-n相关连接的客户构建BI报告。 联接表有一个雇员ID(employee ID)字段 如果所有相关职位在employee ID字段中都有相同的员工,那么我为该报表构建的查询应该在字段“OneEmployee”中给出1,如果是不同的员工,则为null,即: TaskTrans TaskTransHours > EmplId: 'John' TaskTransHours > EmplId: 'John' 这应该在查询中的所述字段中给出1 TaskTra

我正在为一个涉及1-n相关连接的客户构建BI报告。 联接表有一个雇员ID(employee ID)字段

如果所有相关职位在employee ID字段中都有相同的员工,那么我为该报表构建的查询应该在字段“OneEmployee”中给出1,如果是不同的员工,则为null,即:

TaskTrans
    TaskTransHours > EmplId: 'John'
    TaskTransHours > EmplId: 'John'
这应该在查询中的所述字段中给出1

TaskTrans
    TaskTransHours > EmplId: 'John'
    TaskTransHours > EmplId: 'George'
这将使所述字段留空

其思想是创建一个字段,case函数在其中检查并返回正确的值。但我的问题是,尽管有一种方法可以通过SQL检查这一点

select not count(*) from your_table
where employee_id = GIVEN_ID
  and your_field not in ( select min(your_field) 
                          from your_table
                          where employee_id = GIVEN_ID);
注意:我的第一个想法是在内部查询中使用
LIMIT 1
,但MYSQL不喜欢它,所以min it是-使用任意点,但只有一点。Min应该可以工作,但是字段应该被索引,那么这个查询实际上执行得相当快,因为只会使用索引(显然员工id也应该被索引)

注2:不要把
not
count(*)前面的
not混为一谈,如果没有不同的,你想要1,我计算不同的,然后给你
not count(*)
,如果count为0,则为1,否则为0。

似乎是
count()的工作。


您使用的数据库产品和版本是什么?例如Oracle、Sql Server 2008 R2等。我使用的是MSSQL 2008 R2。尽管查询是在VisualStudio中编写的。我将把这一点添加到我的问题中。@Flaskis,你能把你到目前为止写的问题包括进去吗?
SELECT
  …,
  CASE COUNT(DISTINCT TaskTransHours.EmplId) OVER () WHEN 1 THEN 1 END
    AS OneEmployee
FROM …