统计条数同时赋值的问题

quxiang123 2009-09-17 01:55:21


DECLARE @icount SMALLINT
DECLARE @manu NVARCHAR(20)
DECLARE @item SMALLINT

SELECT @icount=COUNT(*) FROM (
SELECT @manu=EMS_NO,@item=G_NO FROM dbo.PTS_IMG WHERE EMS_IMG_ID='9a9162a2-c8f7-40b3-9e61-01760e3358b9') t

SELECT @manu,@item,@icount




这是段错误的代码,请问大家内层赋值的同时,如何外部统计条数在赋值
...全文
131 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
华夏小卒 2009-09-17
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 quxiang123 的回复:]
仔细看了我的存储过程是这样的

SELECT TOP 1 @MANUAL_NO=ManualNo,@Item_NO=Item FROM @TP_Table WHERE IsOver=0 ORDER BY Result DESC


看来要写两句了O(∩_∩)O
[/Quote]

表名,字段名为动态的,要用动态语句
quxiang123 2009-09-17
  • 打赏
  • 举报
回复
仔细看了我的存储过程是这样的

SELECT TOP 1 @MANUAL_NO=ManualNo,@Item_NO=Item FROM @TP_Table WHERE IsOver=0 ORDER BY Result DESC


看来要写两句了O(∩_∩)O
wgsasd311 2009-09-17
  • 打赏
  • 举报
回复

DECLARE @icount SMALLINT
DECLARE @manu NVARCHAR(2000)
DECLARE @item SMALLINT
SET @manu=''
SET @item=0
SET @icount=0

SELECT @manu=@manu+','+EMS_NO,@item=@item+G_NO,@icount=@icount+1 FROM dbo.PTS_IMG WHERE EMS_IMG_ID='9a9162a2-c8f7-40b3-9e61-01760e3358b9'

SELECT @manu,@item,@icount
quxiang123 2009-09-17
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 sql77 的回复:]
引用 9 楼 josy 的回复:
楼主的这个语句最少有两个问题:
1 如果查询的结果有多个,这样赋值是不行的,多个值它是一个结果集没法保存到一个变量
2 如果查询结果只有一条,统计数量就没有任何意义了。

呵呵,是啊
[/Quote]

对不起啊 是我举例子的 where 写的不好,应该是有几条、一条或空的结果
对语法不太了解,特意来请教大家
  • 打赏
  • 举报
回复
关注
fwacky 2009-09-17
  • 打赏
  • 举报
回复

SELECT
distinct
@icount=(select COUNT(*) FROM dbo.PTS_IMG where EMS_IMG_ID = T.EMS_IMG_ID)
@manu=EMS_NO,
@item=G_NO ,

FROM dbo.PTS_IMG T

WHERE EMS_IMG_ID='9a9162a2-c8f7-40b3-9e61-01760e3358b9'


SQL77 2009-09-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 josy 的回复:]
楼主的这个语句最少有两个问题:
1 如果查询的结果有多个,这样赋值是不行的,多个值它是一个结果集没法保存到一个变量
2 如果查询结果只有一条,统计数量就没有任何意义了。
[/Quote]
呵呵,是啊
fwacky 2009-09-17
  • 打赏
  • 举报
回复

SELECT

@icount=(select COUNT(*) FROM dbo.PTS_IMG where EMS_IMG_ID = T.EMS_IMG_ID)
@manu=EMS_NO,
@item=G_NO ,

FROM dbo.PTS_IMG T

WHERE EMS_IMG_ID='9a9162a2-c8f7-40b3-9e61-01760e3358b9'

百年树人 2009-09-17
  • 打赏
  • 举报
回复
楼主的这个语句最少有两个问题:
1 如果查询的结果有多个,这样赋值是不行的,多个值它是一个结果集没法保存到一个变量
2 如果查询结果只有一条,统计数量就没有任何意义了。
quxiang123 2009-09-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 liangck 的回复:]
不知道你要干什么.
内部的子查询不能赋值.
如果是要统计EMS_IMG_ID等于某个值的行数.将子查询去掉.
如果EMS_IMG_ID = 某个值只返回一条记录的话,那么就不用统计行数了.

如果EMS_IMG_ID = 某个值返回多条记录.
如果将它赋值给某个变量的话,那只会得到最后那条记录的值.
记着..一个变量跟一个结果集是不同的概念.
[/Quote]

嗯 谢谢前辈 where 是随变写的,在存储过程里我赋值以后看看条数为不为0
liangCK 2009-09-17
  • 打赏
  • 举报
回复
不知道你要干什么.
内部的子查询不能赋值.
如果是要统计EMS_IMG_ID等于某个值的行数.将子查询去掉.
如果EMS_IMG_ID = 某个值只返回一条记录的话,那么就不用统计行数了.

如果EMS_IMG_ID = 某个值返回多条记录.
如果将它赋值给某个变量的话,那只会得到最后那条记录的值.
记着..一个变量跟一个结果集是不同的概念.
SQL77 2009-09-17
  • 打赏
  • 举报
回复
用存储过程或函数来处理
htl258_Tony 2009-09-17
  • 打赏
  • 举报
回复
DECLARE @icount SMALLINT
DECLARE @manu NVARCHAR(20)
DECLARE @item SMALLINT


SELECT @manu=EMS_NO,@item=G_NO FROM dbo.PTS_IMG WHERE EMS_IMG_ID='9a9162a2-c8f7-40b3-9e61-01760e3358b9'
select @icount=count(*) from dbo.PTS_IMG WHERE EMS_IMG_ID='9a9162a2-c8f7-40b3-9e61-01760e3358b9'

SELECT @manu,@item,@icount
百年树人 2009-09-17
  • 打赏
  • 举报
回复
要分开来
xiequan2 2009-09-17
  • 打赏
  • 举报
回复
DECLARE @icount SMALLINT
DECLARE @manu NVARCHAR(20)
DECLARE @item SMALLINT


SELECT @manu=EMS_NO,@item=G_NO,@icount=COUNT(*) FROM dbo.PTS_IMG WHERE EMS_IMG_ID='9a9162a2-c8f7-40b3-9e61-01760e3358b9'

SELECT @manu,@item,@icount

--小F-- 2009-09-17
  • 打赏
  • 举报
回复
没明白意思
SQL77 2009-09-17
  • 打赏
  • 举报
回复
这样赋值 的话只能是一条,

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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