0

我有一张记录表,例如

╔═════╦══════╦══════════╦══════════╗
║ PID ║ NAME ║  DATE1   ║  DATE2   ║
╠═════╬══════╬══════════╬══════════╣
║ 123 ║ john ║ 20110401 ║ 19700101 ║
║ 123 ║ john ║ 20110401 ║ 19700101 ║
║ 123 ║ john ║ 20110401 ║ 19700101 ║
║ 323 ║ mike ║ 20110401 ║ 19900101 ║
║ 323 ║ mike ║ 20110401 ║ 19900101 ║
╚═════╩══════╩══════════╩══════════╝

query1count开启_pid

query2如果所有四个字段都相同,则将记录视为一条记录,否则将单独记录和记录按pid顺序计数。

上面的结果是:

╔═════╦══════════════╦═════════════╗
║ PID ║ TOTALRECORDS ║ TOTALUNIQUE ║
╠═════╬══════════════╬═════════════╣
║ 123 ║            3 ║           1 ║
║ 323 ║            2 ║           1 ║
╚═════╩══════════════╩═════════════╝

我做了select pid,count(pid),(select count(pid) group by pid,name,date1,date2) from <table> group by pid;

但我得到一个错误......请更正我的代码。

4

1 回答 1

1
SELECT  pid,
        COUNT(*) totalRecords,
        COUNT(DISTINCT name, date1, date2) totalUnique
FROM    TableName
GROUP   BY pid

结果

╔═════╦══════════════╦═════════════╗
║ PID ║ TOTALRECORDS ║ TOTALUNIQUE ║
╠═════╬══════════════╬═════════════╣
║ 123 ║            3 ║           1 ║
║ 323 ║            2 ║           1 ║
╚═════╩══════════════╩═════════════╝
于 2013-03-03T05:10:09.207 回答