试试此查询;
测试数据
CREATE TABLE #TestData (State nvarchar(2), City nvarchar(20), Job nvarchar(20))
INSERT INTO #TestData
VALUES
('CA','LOS ANGELES','DEVELOPER')
,('CA','SAN FRANCISCO','DESIGNER')
,('CA','LOS ANGELES','DESIGNER')
,('NY','NEW YORK','DEVELOPER')
查询
SELECT
a.State
,a.City
,a.Job
,b.CountField
FROM #TestData a
CROSS JOIN (SELECT
COUNT(DISTINCT State + City) CountField
FROM #TestData
) b
输出(无序因为声明没有顺序)
State City Job CountField
CA LOS ANGELES DEVELOPER 3
CA LOS ANGELES DESIGNER 3
CA SAN FRANCISCO DESIGNER 3
NY NEW YORK DEVELOPER 3
按在评论你的问题,你可以做到这一点,以在计数中仅筛选CA;
SELECT
a.State
,a.City
,a.Job
,b.CountField
FROM #TestData a
CROSS JOIN (SELECT
COUNT(DISTINCT State + City) CountField
FROM #TestData
WHERE State = 'CA'
) b
哪些应该输出
State City Job CountField
CA LOS ANGELES DEVELOPER 2
CA LOS ANGELES DESIGNER 2
CA SAN FRANCISCO DESIGNER 2
NY NEW YORK DEVELOPER 2
你的输出不会输入相匹配。你在期待2加州 - 洛杉矶和1其他两行在这里? –