我有这样的表:
Person City workingdate
A Newyork 10.11.2015
A Newyork 11.11.2015
A Newyork 12.11.2015
B Newyork 10.11.2015
B Newyork 15.11.2015
B Newyork 16.11.2015
B Newyork 18.11.2015
Run Code Online (Sandbox Code Playgroud)
我想要一个列出城市内不同人物的专栏:
Person City workingdate countdistinctpersonincity
A Newyork 10.11.2015 1
A Newyork 11.11.2015 0
A Newyork 12.11.2015 0
B Newyork 10.11.2015 1
B Newyork 15.11.2015 0
B Newyork 16.11.2015 0
B Newyork 18.11.2015 0
Run Code Online (Sandbox Code Playgroud)
你能帮帮我怎么做吗?
CREATE TABLE Persons
(Person varchar(25),
City varchar(255),
workingdate varchar(10));
insert into Persons
values ('A', 'Newyork','10.11.2015'),
('A', 'Newyork','11.11.2015'),
('A', 'Newyork','12.11.2015'),
('B', 'Newyork','10.11.2015'),
('B', 'Newyork','15.11.2015'),
('B', 'Newyork','16.11.2015'),
('B', 'Newyork','18.11.2015');
Run Code Online (Sandbox Code Playgroud)
SELECT p.*, p2.*
FROM #Persons p
CROSS APPLY
(SELECT COUNT (DISTINCT p1.Person) as countdistinctpersonincity
FROM
#Persons p1
WHERE
p1.Person <> p.Person
AND p1.City = p.City
AND p1.workingdate = p.workingdate) p2;
Run Code Online (Sandbox Code Playgroud)
测试代码
CREATE TABLE #Persons
(Person varchar(25),
City varchar(255),
workingdate varchar(10))
insert into #Persons
values ('A', 'Newyork','10.11.2015'),
('A', 'Newyork','11.11.2015'),
('A', 'Newyork','12.11.2015'),
('B', 'Newyork','10.11.2015'),
('B', 'Newyork','15.11.2015'),
('B', 'Newyork','16.11.2015'),
('B', 'Newyork','18.11.2015');
SELECT p.*, p2.*
FROM #Persons p
CROSS APPLY
(SELECT COUNT (DISTINCT p1.Person) as countdistinctpersonincity
FROM
#Persons p1
WHERE
p1.Person <> p.Person
AND p1.City = p.City
AND p1.workingdate = p.workingdate) p2;
DROP TABLE #Persons;
Run Code Online (Sandbox Code Playgroud)
结果是这样的:
Person City workingdate countdistinctpersonincity
A Newyork 10.11.2015 1
A Newyork 11.11.2015 0
A Newyork 12.11.2015 0
B Newyork 10.11.2015 1
B Newyork 15.11.2015 0
B Newyork 16.11.2015 0
B Newyork 18.11.2015 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
57 次 |
| 最近记录: |