Sql 我有两列的表,但我想得到四列的结果
这是我的密码Sql 我有两列的表,但我想得到四列的结果,sql,sql-server-2008,Sql,Sql Server 2008,这是我的密码 CREATE TABLE Students ( id int PRIMARY KEY IDENTITY, name char(25) ) INSERT INTO Students(name) VALUES('Farhat') INSERT INTO Students(name) VALUES('shoaib') INSERT INTO Students(name) VALUES('rameez') INSERT INTO Students(name) VALUES('rafay'
CREATE TABLE Students
(
id int PRIMARY KEY IDENTITY,
name char(25)
)
INSERT INTO Students(name) VALUES('Farhat')
INSERT INTO Students(name) VALUES('shoaib')
INSERT INTO Students(name) VALUES('rameez')
INSERT INTO Students(name) VALUES('rafay')
INSERT INTO Students(name) VALUES('ata')
INSERT INTO Students(name) VALUES('fakhar')
SELECT
CASE WHEN s.id%2=1 THEN s.id
END AS Student_id,
CASE WHEN s.id%2=1 THEN s.NAME END AS student_name,
CASE WHEN s.id%2=0 THEN s.id
END AS Student_Id,
CASE WHEN s.id%2=0 THEN s.NAME END AS Student_Name
FROM students s
结果是
1 Farhat NULL NULL
NULL NULL 2 shoaib
3 rameez NULL NULL
NULL NULL 4 rafay
5 ata NULL NULL
NULL NULL 6 fakhar
但是我想要这样的结果
1 Farhat 2 shoaib
3 rameez 4 rafay
5 ata 6 rakhar
意味着我在这个表中有两列,我想在四列中得到结果,好吧,因为我觉得这会很有趣,我尝试了一些东西,但我建议不要使用这个
SELECT s1.id, s1.name, s2.id, s2.name
FROM students s1, students s2
WHERE (s2.id - s1.id = 1
AND s1.id %2 == 1);
有一些注意事项,1如果学生人数为奇数,最后一名学生将不会被打印。(它根本无法处理这个问题,我想不出任何解决办法。)
但在我看来,你应该这样做:
data = DB.query("SELECT s.id, s.name FROM Students s");
for (i=0; i < length(data); i++)
for (j=0; j<2; j++)
print data[i+j].id, data[i+j].name;
endfor
print "\n";
endfor
data=DB.query(“从学生s中选择s.id、s.name”);
对于(i=0;i<长度(数据);i++)
对于(j=0;jJust why!?!SQL不用于对列中的数据进行格式化。您应该将表示形式排除在SQL查询之外,而只需使用您正在使用的任何编程语言即可。
SELECT std1.id AS Student_Id,
std1.NAME AS Student_Name,
std2.id AS Student_Id,
std2.NAME AS Student_Name
FROM students std1, students std2
WHERE (std2.id - std1.id = 1
AND std1.id %2 = 1);