2010-11-09 70 views
1

在MS SQL Server 2008的 如何計算,在共同擁有某一領域的行數。例如,讓我說我有下表。SQL查詢找到的行數與公共領域

UserAccount_ID Attribute_ID 
786   11 
797   10 
797   5 
797   6 
797   11 
555   11 
1003   10 
1003   5 
1003   6 
1003   11 
633   11 
2036   11 
2087   10 
2087   5 
2087   6 
291   11 

我需要執行什麼查詢來獲取下表。這將計算的記錄數與同UserAccount_ID

UserAccount_ID Count 
    786   1 
    797   4 
    555   1 
    1003   4 
    633   1 
    2036   1 
    2087   3 
    291    1 

回答

4
create table #YourTable (
    UserAccount_ID int, 
    Attribute_ID int 
) 

insert into #YourTable 
    (UserAccount_ID, Attribute_ID) 
    select 786,11 union all 
    select 797,10 union all 
    select 797,5 union all 
    select 797,6 union all 
    select 797,11 union all 
    select 555,11 union all 
    select 1003,10 union all 
    select 1003,5 union all 
    select 1003,6 union all 
    select 1003,11 union all 
    select 633,11 union all 
    select 2036,11 union all 
    select 2087,10 union all 
    select 2087,5 union all 
    select 2087,6 union all 
    select 291,11 

select UserAccount_ID, count(*) 
    from #YourTable 
    group by UserAccount_ID 

drop table #YourTable 
+0

這似乎是正確的,但是當我嘗試它時,它給了我兩欄。一個用UserAcount_ID和Count的另一列,每個條目爲4. – bhavinp 2010-11-09 20:14:50

+0

@bhavinp:不知道爲什麼會發生這種情況。我已將您的示例數據添加到我的答案中,以說明該技術的工作原理。 – 2010-11-09 20:23:56

1

這是一個簡單的彙總查詢。 「COUNT per UserAccount_ID分組」

SELECT 
    UserAccount_ID, COUNT(*) 
FROm 
    myTable 
GROUP BY 
    UserAccount_ID