Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 选择一个字段包含相同值的所有行_Sql_Sql Server - Fatal编程技术网

Sql 选择一个字段包含相同值的所有行

Sql 选择一个字段包含相同值的所有行,sql,sql-server,Sql,Sql Server,我想从这样的表格中获得以下数据: 选择User=“Ashley”或User=“Barney”和SomeID在两行上相等的所有行。我基本上需要让Ashley和Barney被列为销售人员的所有客户,但不仅仅是Ashley或Barney。他们两个 我不知道SomeID包含什么值我唯一可用的输入是“Ashley”和“Barney” 有没有办法在(Microsoft)SQL中解决这个问题?我曾尝试使用GROUP BY,但这并没有真正帮助我。要获取ID,可以使用having子句对每个值使用条件计数: se

我想从这样的表格中获得以下数据:

选择
User=“Ashley”或User=“Barney”
SomeID
在两行上相等的所有行。我基本上需要让Ashley和Barney被列为销售人员的所有客户,但不仅仅是Ashley或Barney。他们两个

我不知道SomeID
包含什么值我唯一可用的输入是“Ashley”和“Barney”


有没有办法在(Microsoft)SQL中解决这个问题?我曾尝试使用
GROUP BY
,但这并没有真正帮助我。

要获取ID,可以使用having子句对每个值使用条件计数:

select SomeID
from MyTable
group by SomeID
having count(case when Salesman = 'Ashley' then 1 else null end) > 0
and count(case when Salesman = 'Barney' then 1 else null end) > 0
然后,选择整行就像在该查询中加入一样简单:

select MyTable.Customer, MyTable.Salesman, MyTable.SomeID
from MyTable
join (
    select SomeID
    from MyTable
    group by SomeID
    having count(case when Salesman = 'Ashley' then 1 else null end) > 0
    and count(case when Salesman = 'Barney' then 1 else null end) > 0
) x on MyTable.SomeID = x.SomeID

要获取ID,您可以使用having子句,并对每个值使用条件计数:

select SomeID
from MyTable
group by SomeID
having count(case when Salesman = 'Ashley' then 1 else null end) > 0
and count(case when Salesman = 'Barney' then 1 else null end) > 0
然后,选择整行就像在该查询中加入一样简单:

select MyTable.Customer, MyTable.Salesman, MyTable.SomeID
from MyTable
join (
    select SomeID
    from MyTable
    group by SomeID
    having count(case when Salesman = 'Ashley' then 1 else null end) > 0
    and count(case when Salesman = 'Barney' then 1 else null end) > 0
) x on MyTable.SomeID = x.SomeID

我会这样做:

SELECT * 
  FROM MyTable
 WHERE SomeID IN (
                   SELECT SomeID
                     FROM MyTable
                    WHERE Salesman IN ('Ashley','Barney')
                 GROUP BY SomeID
                   HAVING count(distinct Salesman) = 2
                 )

这里有一个。

我会这样做:

SELECT * 
  FROM MyTable
 WHERE SomeID IN (
                   SELECT SomeID
                     FROM MyTable
                    WHERE Salesman IN ('Ashley','Barney')
                 GROUP BY SomeID
                   HAVING count(distinct Salesman) = 2
                 )

这里有一个。

我想我们可以把它改成《推销员》(Ashley)、《Barney》),而不需要两个不同的案例statements@rs.我之所以不这么做是因为我们不知道{SomeID,saller}是独一无二的。例如,如果Ashley有两行,Barney没有,我们就不想选择这一行。啊,是的,多行的值是相同的,我想我们可以将其更改为“do Salesian IN”(“Ashley”,“Barney”),而不需要两个不同的大小写statements@rs.我之所以不这么做是因为我们不知道{SomeID,saller}是独一无二的。例如,如果Ashley有两行,Barney没有,我们不想选择这一行。啊,是的,对于具有相同值的多行是这样的