请问如下数据如何处理?

wang7655 2008-12-07 02:53:32
id orderid employeename fylx je
949 4 徐志旗 奖金 8.0000
947 4 常贵华 奖金 16.0000
951 4 徐志旗 提箱费 50.0000

查询数据库是这个结果,我需要得到的结果是

4 徐志旗 奖金 8.0000 常贵华 奖金 16.0000 徐志旗 提箱费 50.0000
全部横向列出来,请问如何处理?





...全文
232 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
wang7655 2008-12-10
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 chuifengde 的回复:]
说说你的运行环境比如sql版本,补丁状况,登录认证方式等
[/Quote]
windows 2000 个人版 sql server2000 没打SP3的,登陆方式是sa登陆
kye_jufei 2008-12-10
  • 打赏
  • 举报
回复
測試通過
chuifengde 2008-12-10
  • 打赏
  • 举报
回复
说说你的运行环境比如sql版本,补丁状况,登录认证方式等
chuifengde 2008-12-10
  • 打赏
  • 举报
回复
打上sp4补丁再试试(注:请在试验的sql服务器上试,在应用服务器上试出问题我可不负责)
wang7655 2008-12-09
  • 打赏
  • 举报
回复
实际上10楼是我想得到的方式,我要在程序中查询,那么是写一个视图还是一个存储过程来调用
wang7655 2008-12-09
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 chuifengde 的回复:]
10楼有什么问题?生成的新表tbss就是每个orderid对应1行,tbss可以与第一张表关联
[/Quote]

我在数据库中测试,出现
服务器: 消息 50007,级别 16,状态 1,行 0
xp_execresultset: unable to get a bound connection back to server

不知道为什么
flyerwing 2008-12-09
  • 打赏
  • 举报
回复
全部加成一个字符串不行吗?
berlinruan 2008-12-09
  • 打赏
  • 举报
回复
这种问题多试两次不就知道了么
chuifengde 2008-12-09
  • 打赏
  • 举报
回复
10楼有什么问题?生成的新表tbss就是每个orderid对应1行,tbss可以与第一张表关联
wang7655 2008-12-09
  • 打赏
  • 举报
回复
我还是在郁闷中!
wang7655 2008-12-09
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 chuifengde 的回复:]
将declare @sql varchar(8000) 改成declare @sql nvarchar(4000)试试
[/Quote]

没有,还是老问题,一运行getValue 就出现这个情况了

错误还是
服务器: 消息 50007,级别 16,状态 1,行 0
xp_execresultset: unable to get a bound connection back to server
单线程加锁 2008-12-09
  • 打赏
  • 举报
回复
学习
wang7655 2008-12-09
  • 打赏
  • 举报
回复
恩,晚上继续试,我是头大了,搞不出来了
underlemontree 2008-12-09
  • 打赏
  • 举报
回复

CREATE TABLE tb(
id int,
orderid int,
employeename nvarchar(10),
fylx nvarchar(10),
je money
);
INSERT tb
SELECT 949, 4, N'徐志旗', N'奖金', 8.0000 UNION ALL
SELECT 947, 4, N'常贵华', N'奖金', 16.0000 UNION ALL
SELECT 951, 4, N'徐志旗', N'提箱费', 50.0000;

declare @a varchar(3000)
set @a='4 '
select @a=@a+employeename+' '+fylx+' '+cast(je as varchar(30))+' ' from tb
print @a

drop table tb
/*
4 徐志旗 奖金 8.00 常贵华 奖金 16.00 徐志旗 提箱费 50.00
*/
chuifengde 2008-12-09
  • 打赏
  • 举报
回复
写个存储过程就行了
chuifengde 2008-12-09
  • 打赏
  • 举报
回复
将declare @sql varchar(8000) 改成declare @sql nvarchar(4000)试试
-晴天 2008-12-08
  • 打赏
  • 举报
回复
把已经变成一行的查询结果再与第一张表连接.
wang7655 2008-12-08
  • 打赏
  • 举报
回复
测试过给的答案是可以

问题我这里写出来的数据是查询出来的

本来是两个表关联的

其中的orderid是和第一张关联

比如,第一张是

ID ORDERID PORT.......

第二张表是
id orderid employeename fylx je

两张表连起来才查询出来的结果可能是多行,即第一张表的一行对应第二张表的多行,我需要把第二张表变成一行应该怎么写呢??

谁能给个例子
zc_0101 2008-12-08
  • 打赏
  • 举报
回复
我怎么没觉得你第一个表影响第二个表的查询?你的结果完全和第一个表没有什么关系啊。
参照11楼
apple02180503 2008-12-08
  • 打赏
  • 举报
回复

-- 示例数据
CREATE TABLE tb(
id int,
orderid int,
employeename nvarchar(10),
fylx nvarchar(10),
je money
);
INSERT tb
SELECT 949, 4, N'徐志旗', N'奖金', 8.0000 UNION ALL
SELECT 947, 4, N'常贵华', N'奖金', 16.0000 UNION ALL
SELECT 951, 4, N'徐志旗', N'提箱费', 50.0000;

-- 查询处理
DECLARE
@s varchar(8000); -- 2005 及之后的版本改为 nvarchar(max)
SET @s = '';
SELECT
@s = @s
--+ ',' + RTRIM(id)
+ ',' + RTRIM(orderid)
+ ',' + QUOTENAME(employeename, '''')
+ ',' + QUOTENAME(fylx, '''')
+ ',' + RTRIM(je)
FROM tb;
SET @s = STUFF(@s, 1, 1, '');
EXEC('SELECT ' + @s);
GO

-- 删除测试数据
DROP TABLE tb;

加载更多回复(13)

22,209

社区成员

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

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