2011-01-11 81 views
0

我需要一个复杂的查询:用不同的SQL计算总行数?

考虑一下这个表:

ID - field1 - field2 
================= 
1  a  10 
2  a  10 
3  a  20 
4  b  20 

我需要计算由FIELD1和FIELD2分组的总记录的查询。我的意思是我需要这个结果:

field  - count 
================== 
field1 a - 3 
field1 b - 1 
field2 10 - 2 
field2 20 - 2 

也许我需要做2每个字段的查询我需要计数?

SELECT field1, COUNT(*) FROM t1 GROUP BY field1 

感谢您的任何建议

回答

2

你确实需要两个进行选择,但你可以让他们返回一个结果如下所示。请注意,您需要对第一个SELECT进行CAST,以使这些值与第二个SELECT中的文本字段兼容:

SELECT 'field1' AS FieldName, CAST(field1 AS CHAR) AS FieldValue, COUNT(*) AS Count 
    FROM table GROUP BY field1 
UNION ALL 
SELECT 'field2' AS FieldName, field2 AS FieldValue, COUNT(*) AS Count 
    FROM table GROUP BY field2 
+0

就这样,感谢您的更正。 – 2011-01-11 14:41:22