2010-05-19 104 views
0

我有兩個查詢。 對於query1的每個元組,我想運行query2。我不想使用遊標。我嘗試了幾種使用子查詢的方法。T-SQL子查詢問題

QUERY1:

select 
    distinct 
    category, 
    Count(category) as CategoryCount 
from 
    mytable 
group by 
    category 

QUERY2:

select 
    top 3 
    Text, 
    Title, 
    Category 
from 
    mytable 
where 
    Category = '1' 

Category = '1'是一個示例。價值應該來自QUERY1

+0

你總是需要前3名的形式MYTABLE爲每個類別 – 2010-05-19 10:24:26

+0

標記的TSQL - 所以MS SQL – 2010-05-19 10:29:40

回答

1

試試這個

WITH TBL AS 
(
SELECT TEXT, TITLE, CATEGORY, 
     COUNT(*) OVER(PARTITION BY CATEGORY) AS CATEGORYCOUNT, 
     ROW_NUMBER() OVER(PARTITION BY CATEGORY ORDER BY (SELECT 0)) AS RC 
FROM MYTABLE 
) 
SELECT TEXT, TITLE, CATEGORY, CATEGORYCOUNT 
FROM TBL 
WHERE RC <= 3 
ORDER BY CATEGORY 
+0

無效列名「RC」。 – NickD 2010-05-19 10:30:20

+0

您正在運行哪個版本的SQL?這不會在2000年工作。只有2005 + – 2010-05-19 10:32:29

+0

但沒有WHERE RC <= 3正是我想要的。 – NickD 2010-05-19 10:32:40