我写的代码只告诉我有多少学生年龄相同。我也想要他们的名字......
SELECT YEAR(CURRENT DATE-DATEOFBIRTH) AS AGE, COUNT(*) AS HOWMANY
FROM STUDENTS
GROUP BY YEAR(CURRENT DATE-DATEOFBIRTH);
这会返回如下内容:
AGE HOWMANY
--- -------
21 3
30 5
谢谢。
TABLE STUDENTS COLUMNS:
StudentID (primary key), Name(varchar), Firstname(varchar), Dateofbirth(varchar)
我在考虑使用上面的代码,并在某处添加函数concat,将stundents的名称放在与
相同的行上答案 0 :(得分:1)
您现有的SQL看起来有错误,但您可以使用GROUP_CONCAT
:
添加GROUP_CONTACT(colname)
作为另一列进行提取,然后在应用中按,
进行拆分
答案 1 :(得分:1)
除非您正在查找学生列表,他们的年龄以及有多少其他同龄学生,否则结果数据集在表面上看起来没有用,除非您正在查找学生列表:
SELECT NAME, AGE, HOWMANY
FROM STUDENTS AS S,
(SELECT YEAR(CURRENT DATE-DATEOFBIRTH) AS AGE,
COUNT(*) AS HOWMANY
FROM STUDENTS
GROUP BY YEAR(CURRENT DATE-DATEOFBIRTH)
) AS A
WHERE YEAR(CURRENT DATE-S.DATEOFBIRTH) = A.AGE
基本上使用您计算的年龄计数执行自我联接。
答案 2 :(得分:0)
怎么样......
SELECT name FROM students WHERE age = ENTER_AGE_HERE;
您可以通过查找从查询中获得的条目数来找到学生的姓名和数量。
例如,在PHP中,您可以找到数组的长度。
当然,您必须将我的示例中的名称更改为数据库中使用的名称。
答案 3 :(得分:0)
CREATE TABLE #Student
(
id int identity(1,1),
age int,
name varchar(255)
)
INSERT INTO #Student S
VALUES(21,'bob'),
(21,'tom'),
(21,'dick'),
(21,'william'),
(35,'mark'),
(35,'anthony')
SELECT age,COUNT(*),STUFF(
(
SELECT ',' + name
FROM #Student SS
WHERE SS.age = S.age
FOR XML PATH('')
), 1, 1, '')
FROM #Student s
GROUP BY age