sql 怎么让 查询出的三行数据 平铺到一行显示

hjqiaho 2014-11-02 03:15:12
比如
num value
1 q
2 w
3 e
显示为 这样
1 q 2 w 3 e

...全文
602 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hjqiaho 2014-11-03
  • 打赏
  • 举报
回复
引用 5 楼 ky_min 的回复:
建议在程序上处理,遍历每行成一行,因为你到最后应该也是用于显示在前端程序上吧 实在要用SQL,比较麻烦,因为了解到你的需求是要能适应动态的行数的 类似以下吧
DECLARE @SQL VARCHAR(8000)
DECLARE @TABLEJOIN VARCHAR(8000)
SET @SQL='SELECT T1.name,T1.value'
SET @TABLEJOIN=' FROM #T T1'
SELECT @SQL=@SQL+',T'+CAST(RN AS VARCHAR(10))+'.name,T'+CAST(RN AS VARCHAR(10))+'.value'
	,@TABLEJOIN=@TABLEJOIN+' LEFT JOIN #T T'+CAST(RN AS VARCHAR(10))+' ON T'+CAST(RN AS VARCHAR(10))+'.RN='+CAST(RN AS VARCHAR(10))
FROM #T WHERE RN>1
SET @SQL=@SQL+@TABLEJOIN+' WHERE T1.RN=1'
PRINT @SQL
EXEC(@SQL)
3q 还是在查询后处理方便点
Pc498471249 2014-11-02
  • 打赏
  • 举报
回复
for xml path
还在加载中灬 2014-11-02
  • 打赏
  • 举报
回复
建议在程序上处理,遍历每行成一行,因为你到最后应该也是用于显示在前端程序上吧 实在要用SQL,比较麻烦,因为了解到你的需求是要能适应动态的行数的 类似以下吧
DECLARE @SQL VARCHAR(8000)
DECLARE @TABLEJOIN VARCHAR(8000)
SET @SQL='SELECT T1.name,T1.value'
SET @TABLEJOIN=' FROM #T T1'
SELECT @SQL=@SQL+',T'+CAST(RN AS VARCHAR(10))+'.name,T'+CAST(RN AS VARCHAR(10))+'.value'
	,@TABLEJOIN=@TABLEJOIN+' LEFT JOIN #T T'+CAST(RN AS VARCHAR(10))+' ON T'+CAST(RN AS VARCHAR(10))+'.RN='+CAST(RN AS VARCHAR(10))
FROM #T WHERE RN>1
SET @SQL=@SQL+@TABLEJOIN+' WHERE T1.RN=1'
PRINT @SQL
EXEC(@SQL)
hjqiaho 2014-11-02
  • 打赏
  • 举报
回复
引用 3 楼 ky_min 的回复:
如果是四行呢?
那就变成8列 只要把所有行平铺到一行
还在加载中灬 2014-11-02
  • 打赏
  • 举报
回复
如果是四行呢?
hjqiaho 2014-11-02
  • 打赏
  • 举报
回复
引用 1 楼 ky_min 的回复:
显示为 这样 1 q 2 w 3 e 这个几列呢
一行六列 原来是三行
还在加载中灬 2014-11-02
  • 打赏
  • 举报
回复
显示为 这样 1 q 2 w 3 e 这个几列呢

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧