2014-04-10 41 views
-1

這是我的代碼我有表有兩個列,但我想會採用四列

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 

意思是我在這張表中有兩列,我想得到四列的結果

+0

只是爲什麼!?! SQL不打算對列中的數據進行格式化。你應該從SQL查詢中留下演示文稿,並使用你正在使用的任何編程語言來做到這一點。 – EWit

回答

0

好吧,因爲我認爲這將很有趣我嘗試了一些東西,但我建議不要使用它。

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); 

有一些注意事項,如果有奇數的學生,最後一名學生將不會被打印。 (它只是不處理這種情況下,我想不出什麼辦法來解決這個問題。)

但在我看來,你應該這樣做:

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 

請注意,這只是僞代碼,所以你必須調整它。 (另外i+j容易溢出陣列)

0
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); 
相關問題