需要像这样的SQL查询输出

时间:2011-11-05 13:45:54

标签: sql sql-server

这是我的查询

SELECT 
  F.intfloorno,
  FL.nvrflatname 
FROM tbl_floormaster F 
INNER JOIN tbl_flatmaster FL ON FL.intfloorid=F.intfloorid 
WHERE intblockid=1 
ORDER BY intfloorno DESC

这是输出:

floorno        flat       
2          FlatB1
2          FlatB2
1          FlatA1
1          FlatA2

但我需要这样:

floorno  flat        dummycolum
1       FlatA1         FlatA2
2       FlatB2         FlatB2 

3 个答案:

答案 0 :(得分:2)

好的,如果您的原始输出在floorno 1上包含10000个单位实例,您会想要9,999个虚拟列吗?

忽略floorno的排序 - 使用ORDER BY子句很容易 - 您将查询的输出与输出的显示格式混淆。

使用SQL查询数据,然后将其传递给其他可以在表示层中对其进行格式化的过程。如果您描述了您的表示层(html?),那么您可以将帖子移动到关于在表格中显示请求结果的HTML / XHR问题。

答案 1 :(得分:1)

你想控制表现输出吗?如果是这样,这是错误的做法。但是,如果您尝试转置表格,则可以查看crosstab or pivot query。 这是another description

答案 2 :(得分:1)

此:

SELECT F.intfloorno as Floor,
    stuff( (SELECT ','+FL.nvrflatname
     FROM tbl_flatmaster FL 
     WHERE FL.intfloorid=F.intfloorid
     ORDER BY FL.nvrflatname
     FOR XML PATH ('')
    ), 1, 2, '') as FlatList
WHERE intblockid=1 
ORDER BY intfloorno DESC

将给出

Floor   FlatList
1       FlatA1,FlatA2
2       FlatB1,FlatB2 

不在单独的列中,但也许你想要的是什么?