Sql server 2008 使用打印的简单基于文本的报表MS SQL Server 2008
我的第一项作业快完成了,但最后一个问题把我难住了 它要求: 制作一份故障产品报告,其中显示2010年7月11日因外部损坏而退回的产品 这方面的预期产出是: 故障产品报告 -------------------------------------- 品名:书桌 客户名称:Simon,Kernel 原因:外部损坏 (1行受影响) ---报告结束--- 我发现了SQLSql server 2008 使用打印的简单基于文本的报表MS SQL Server 2008,sql-server-2008,reporting-services,Sql Server 2008,Reporting Services,我的第一项作业快完成了,但最后一个问题把我难住了 它要求: 制作一份故障产品报告,其中显示2010年7月11日因外部损坏而退回的产品 这方面的预期产出是: 故障产品报告 -------------------------------------- 品名:书桌 客户名称:Simon,Kernel 原因:外部损坏 (1行受影响) ---报告结束--- 我发现了SQLPRINT,现在我几乎把它归结为一个T: DECLARE @ProductName varchar(30) SET @ProductNa
PRINT
,现在我几乎把它归结为一个T:
DECLARE @ProductName varchar(30)
SET @ProductName =(SELECT MIN(Products.ProductName) FROM Products)
DECLARE @CustomerName varchar(75)
SET @CustomerName =(SELECT MIN(Customers.FirstName+', '+Customers.Surname)
FROM Customers,CustomerReturns,Products
WHERE CustomerReturns.ReturnDate='2012/07/11'
AND Products.ProductID=CustomerReturns.ProductID
AND Customers.CustomerID=CustomerReturns.CustomerID)
DECLARE @Reason varchar(30)
SET @Reason =(SELECT MIN(CustomerReturns.Reason)
FROM CustomerReturns,Products,Customers
WHERE CustomerReturns.Reason='Damaged Exterior')
PRINT 'FAULTY PRODUCT REPORT';
PRINT '';
PRINT '---------------------';
PRINT 'Product Name: '+@ProductName;
PRINT 'Customer Name: '+@CustomerName;
PRINT 'Reason: '+@Reason;
PRINT '';
PRINT '---END OF REPORT---';
以及我的输出:
故障产品报告
--------------------------------------
品名:书桌
客户名称:Simon,Kernel
原因:外部损坏
---报告结束---
正如你所看到的,我仍然缺少:
(1行受影响)
我怎样才能在不作弊、不打印的情况下让它出现呢?(因为无论返回多少结果,它都将保持不变)
编辑:
我发现这样做:选择@ProductName…
会产生1条受影响的路径,是否正确
PRINT 'FAULTY PRODUCT REPORT';
PRINT '';
PRINT '---------------------';
PRINT 'Product Name: '+@ProductName;
PRINT 'Customer Name: '+@CustomerName;
PRINT 'Reason: '+@Reason;
SELECT @ProductName,@CustomerName,@Reason
PRINT '';
PRINT '---END OF REPORT---';
EIDT2:
将其更改为:
DECLARE @PName varchar(35)
DECLARE @CName varchar(75)
DECLARE @RName varchar(75)
SELECT @PName=Products.ProductName,
@CName=Customers.FirstName+', '+Customers.Surname ,
@RName=CustomerReturns.Reason
FROM Products,Customers,CustomerReturns
WHERE CustomerReturns.ReturnDate='2012/09/28'
AND CustomerReturns.Reason='Damaged Exterior'
AND Products.ProductID=CustomerReturns.ProductID
AND Customers.CustomerID=CustomerReturns.CustomerID
PRINT @PName
PRINT @CName
PRINT @RName
但还是没有影响到什么
非常感谢您提供的任何帮助。
选择
,更新
,插入
和删除
都使用消息选项卡输出受操作影响的行数。(NOCOUNT标志可能会影响这一点,但我还没有做任何研究来支持这一点)
您已经确定,SELECT
语句是显示(受影响的1行)
文本输出的一种方式;然而,有不止一种方法可以产生这种输出
您当前的查询似乎符合作业要求的大部分内容-这可能是一个很好的时机,可以将其提交给您的讲师,并要求他们澄清他们想要的内容。
选择,更新,INSERT
和DELETE
都使用Messages选项卡输出受操作影响的行数。(NOCOUNT
标志可能会影响这一点,但我还没有做任何研究来支持这一点)
您已经确定,SELECT
语句是显示(受影响的1行)
文本输出的一种方式;然而,有不止一种方法可以产生这种输出
您当前的查询似乎符合作业要求的大部分内容-这可能是一个很好的时机,可以将其提交给您的讲师,并要求澄清他们想要的内容。在您的查询之后,看看如何使用@@ROWCOUNT
函数。此函数返回受上一条语句影响的行数
使用上面的第二次编辑,您可以执行以下操作:
DECLARE @PName varchar(35)
DECLARE @CName varchar(75)
DECLARE @RName varchar(75)
DECLARE @rowCount int
SELECT @PName=Products.ProductName,
@CName=Customers.FirstName+', '+Customers.Surname ,
@RName=CustomerReturns.Reason
FROM Products,Customers,CustomerReturns
WHERE CustomerReturns.ReturnDate='2012/09/28'
AND CustomerReturns.Reason='Damaged Exterior'
AND Products.ProductID=CustomerReturns.ProductID
AND Customers.CustomerID=CustomerReturns.CustomerID
SET @rowCount = @@ROWCOUNT
PRINT @PName
PRINT @CName
PRINT @RName
--Use @rowCount in your report.
请注意,必须在执行查询后立即获取行计数。这样,无论你得到多少行,你都会得到正确的数字——避免你提到的“作弊”场景
希望这能有所帮助。在查询之后,看看如何使用@@ROWCOUNT
函数。此函数返回受上一条语句影响的行数
使用上面的第二次编辑,您可以执行以下操作:
DECLARE @PName varchar(35)
DECLARE @CName varchar(75)
DECLARE @RName varchar(75)
DECLARE @rowCount int
SELECT @PName=Products.ProductName,
@CName=Customers.FirstName+', '+Customers.Surname ,
@RName=CustomerReturns.Reason
FROM Products,Customers,CustomerReturns
WHERE CustomerReturns.ReturnDate='2012/09/28'
AND CustomerReturns.Reason='Damaged Exterior'
AND Products.ProductID=CustomerReturns.ProductID
AND Customers.CustomerID=CustomerReturns.CustomerID
SET @rowCount = @@ROWCOUNT
PRINT @PName
PRINT @CName
PRINT @RName
--Use @rowCount in your report.
请注意,必须在执行查询后立即获取行计数。这样,无论你得到多少行,你都会得到正确的数字——避免你提到的“作弊”场景
希望这能有所帮助。正如我最初提到的:(受影响的1行)
行是一个标准输出,用于选择、更新、插入、删除等。问题是,您正在从解决方案文本向后工作,并试图找出如何生成该行(受影响的1行)
。由于有多种方法可以获得该行,因此真正解决问题的唯一方法是询问看到原始查询的人,如您的导师。谢谢,如果没有其他帮助答案,我会将其标记为已解决/答案,如我最初提到的:(受影响的1行)
行是SELECT使用的标准输出,更新、插入、删除等。问题是您正在从解决方案文本向后操作,并试图找出如何生成行(受影响的1行)
。因为有多种方法可以得到答案,所以真正解决问题的唯一方法就是问那些看过原始问题的人,比如你的导师。谢谢你,如果没有其他帮助的答案,我会把这个标记为已解决/答案谢谢,这看起来更像我需要的。谢谢你,这看起来更像是我需要的。你是最棒的:P