我正在使用以下SQL查询来获取20下的几个项类型的计数。我要做的是提取属于该类别的所有行。还有其他类型超过20但我并不特别关心这些。
SELECT ITEM_TYPE, COUNT(ITEM_NUMBER) As "COUNT"
FROM TOTAL_COLLECTION
group by ITEM_TYPE
HAVING Count(ITEM_TYPE) < 20;
结果:
C15 9
C1SRT 1
CA7 7
D4S5M 10
D4S7M 4
D5S7E 2
例如:我有9个属于C15的计数。
SELECT LTRIM(RTRIM(ITEM_TYPE)) AS ITEM_TYPE, ITEM_STATUS, ITEM_NUMBER
FROM TOTAL_COLLECTION
WHERE ITEM_TYPE in ('c15')
C15 2 000540176
C15 2 000384552
C15 2 000452976
C15 2 000372632
C15 2 000573561
C15 2 000592110
C15 2 000465054
C15 2 000394784
C15 2 000400305
我正在尝试合并第一个查询的结果,以便为我提供所有这些类型的完整列表。所有字段都在一个表中找到。
我试图找到这个问题的答案,但我无法找到一个。如果我以某种方式错过了这个,我为复制道歉。我仍然是SQL新手。
答案 0 :(得分:1)
试试这个:
SELECT LTRIM(RTRIM(ITEM_TYPE)) AS ITEM_TYPE, ITEM_STATUS, ITEM_NUMBER
FROM TOTAL_COLLECTION
WHERE ITEM_TYPE in (
SELECT ITEM_TYPE
FROM TOTAL_COLLECTION
group by ITEM_TYPE
HAVING Count(ITEM_TYPE) < 20
)
答案 1 :(得分:0)
假设SQL Server 2008+,您可以使用OVER
子句:
WITH CTE AS
(
SELECT *,
N = COUNT(*) OVER(PARTITION BY ITEM_TYPE)
FROM dbo.TOTAL_COLLECTION
)
SELECT LTRIM(RTRIM(ITEM_TYPE)) AS ITEM_TYPE,
ITEM_STATUS,
ITEM_NUMBER
FROM CTE
WHERE N < 20;