SQL查询用户使用2个以上的设备

时间:2017-02-22 18:59:23

标签: sql sql-server

我正在努力学习SQL查询,我很擅长做专家,很长一段时间我没有做过任何SQL,所以我很感激帮助!

我得到的数据就像

Username  DeviceName

John      Laptop
John      Workstation
John      Workstation
John      Workstation
John      Workstation1
John      Workstation1
John      Workstation1
John      ThinClient
Julien    Laptop2
Julien    Workstation7
Julien    Workstation7
Julien    ThinClient
Julien    ThinClient
Julien    ThinClient
Julien    ThinClient
Andrew    ThinClient
Andrew    ThinClient1
Andrew    Thinclient2

我想知道的是,当其中一台设备是笔记本电脑时,使用2台以上设备的用户,这对我来说是困难的部分,所需的结果看起来像

John      Workstation
John      Workstation1
John      laptop
John      ThinClient 
Julien    Laptop2
Julien    Workstation7
Julien    ThinClient

安德鲁没有被列入名单,因为它没有笔记本电脑(DeviceName就像笔记本电脑一样)。

非常感谢您的帮助,到目前为止,我的所有代码都无效,而且我现在无法用现有的知识找到方法。

干杯, Ĵ

2 个答案:

答案 0 :(得分:1)

我认为您的情况很容易转化为查询。因为你想要接近原始行的东西,我认为窗口函数使这更容易:

<mvn>/conf/

答案 1 :(得分:1)

我认为您可以获取笔记本电脑用户列表,然后从该列表中找到也有非笔记本电脑设备的人。这是一个独立的测试脚本。

declare @t table(username nvarchar(100),devicename nvarchar(100));
insert into @t select 'John','Laptop'
insert into @t select 'John','Workstation'
insert into @t select 'John','Workstation'
insert into @t select 'John','Workstation'
insert into @t select 'John','Workstation1'
insert into @t select 'John','Workstation1'
insert into @t select 'John','Workstation1'
insert into @t select 'John','ThinClient'
insert into @t select 'Julien','Laptop2'
insert into @t select 'Julien','Workstation7'
insert into @t select 'Julien','Workstation7'
insert into @t select 'Julien','ThinClient'
insert into @t select 'Julien','ThinClient'
insert into @t select 'Julien','ThinClient'
insert into @t select 'Julien','ThinClient'
insert into @t select 'Andrew','ThinClient'
insert into @t select 'Andrew','ThinClient1'
insert into @t select 'Andrew','Thinclient2'
insert into @t select 'Bob','Laptop9'

select distinct
  username, devicename
from @t
where username in(select username from @t where devicename like 'laptop%')     --they have a laptop
  and username in(select username from @t where devicename not like 'laptop%') --they also have a non-laptop