SQL Server:基于两列返回特殊计数列
Posted
技术标签:
【中文标题】SQL Server:基于两列返回特殊计数列【英文标题】:SQL Server: Return Special Count Column based on two Columns 【发布时间】:2014-03-19 20:17:17 【问题描述】:我想获取每个“ID”中包含的“代码”计数。考虑一下我想要的这张桌子:
╔════════╦════════╦══════╗ ║ ID ║ 代码 ║ 计数║ ╠════════╬════════╬══════╣ ║ 111 ║ abcd ║ 2 ║ ║ 111 ║ abcdes ║ 2 ║ ║ 222 ║ dddd ║ 1 ║ ║ 333 ║ ddww1 ║ 3 ║ ║ 333 ║ ddww2 ║ 3 ║ ║ 333 ║ ddww3 ║ 3 ║ ║ 444 ║ abcde1 ║ 2 ║ ║ 444 ║ abcde2 ║ 2 ║ ╚════════╩════════╩══════╝如您所见,它返回每个 ID 中的代码数。
我在想这样的事情......但它不起作用:
SELECT COUNT(CODE) AS CODE_COUNT FROM TABLE1 a, TABLE1 b WHERE a.ID=b.ID;
【问题讨论】:
【参考方案1】:SQL Fiddle
MS SQL Server 2008 架构设置:
CREATE TABLE TABLE1( ID INT,Code VARCHAR(20))
GO
INSERT INTO TABLE1 VALUES
(111,'abcd'),
(111,'abcdes'),
(222,'dddd'),
(333,'ddww1'),
(333,'ddww2'),
(333,'ddww3'),
(444,'abcde1'),
(444,'abcde2')
查询 1:
SELECT A.ID
,A.Code
,Sub.CODE_COUNT
FROM TABLE1 A
INNER JOIN (
SELECT ID , COUNT(*) AS CODE_COUNT
FROM TABLE1
GROUP BY ID) Sub
ON A.ID = Sub.ID
Results:
| ID | CODE | CODE_COUNT |
|-----|--------|------------|
| 111 | abcd | 2 |
| 111 | abcdes | 2 |
| 222 | dddd | 1 |
| 333 | ddww1 | 3 |
| 333 | ddww2 | 3 |
| 333 | ddww3 | 3 |
| 444 | abcde1 | 2 |
| 444 | abcde2 | 2 |
【讨论】:
以上是关于SQL Server:基于两列返回特殊计数列的主要内容,如果未能解决你的问题,请参考以下文章
ACCESS有一个表,我想根据A列或是C列两列数据中的任意数据进行查询,怎么创建查询? 哪位高人可以指点下