使用列数据作为sql中的列标题

时间:2012-11-26 23:15:25

标签: sql database sqlite

我有一个包含列标题的表格,如下所示:

p_id|s_id|value

所以表格就像:

1|1|39
1|2|97
1|3|42

第一列是p_id,第二列是s_id,第三列是value

p_id有673个左右不同的值,s_id有大约6个可能的值,value是整数。 每个(p_ids_id)对映射到value,每个p_id有六个值(因为只有六个s_id的)。 以下是一些例子:

(p_id, s_id, value)
(1, 1, 238), (1, 2, 489), ... (1, 6, 391),
(2, 1, 380), (2, 2, 112), ... (2, 6, 402),
. . .
(673, 1, 371), (673, 2, 239), ... (673, 6, 230)

所以这就是我想要作为输出的列标题:

p_id 1 2 3 4 5 6

然后表格将填入“值”。

如何使用SQL语句执行此操作?我需要制作一张新桌子吗?

1 个答案:

答案 0 :(得分:0)

一个简单的Case语句将起作用。试试这个:

SELECT    
    p_id, 
    MIN(CASE WHEN s_id = 1 THEN value END) AS [1], 
    MIN(CASE WHEN s_id = 2 THEN value END) AS [2], 
    MIN(CASE WHEN s_id = 3 THEN value END) AS [3], 
    MIN(CASE WHEN s_id = 4 THEN value END) AS [4],
    MIN(CASE WHEN s_id = 5 THEN value END) AS [5], 
    MIN(CASE WHEN s_id = 6 THEN value END) AS [6]
FROM        
    [TableName]
GROUP BY 
    p_id