【发布时间】:2015-02-06 00:07:17
【问题描述】:
我正在处理此查询一段时间,但无法找出问题所在。我要做的就是从表中获取信息(最大订单,谁下订单),将其存储并在控制台上将结果作为消息打印出来。感谢您的所有帮助。
这是我的查询:
USE DB;
DECLARE @BigCustomer table(CustomerName varchar(50), Itemtotal smallmoney);
INSERT @BigCustomer
SELECT (FirstName + ' ' + LastName),
MAX((ItemPrice - DiscountAmount) * Quantity)
FROM Orders as o join customers as c
on o.CustomerID = c.CustomerID
join OrderItems as oi
on o.OrderID = oi.OrderID
WHERE o.CustomerID = 3
GROUP BY (FirstName + ' ' + LastName),
((ItemPrice - DiscountAmount) * Quantity)
DECLARE @CN nvarchar(50);
SET @CN = (SELECT CustomerName FROM @BigCustomer)
DECLARE @IT smallmoney;
SET @IT = (SELECT ItemTotal FROM @BigCustomer)
DECLARE @PrintMessage nvarchar(50);
SET @PrintMessage = N'The largest order of ' +
CONVERT(nvarchar(50), @IT) + N'was made by ' + @CN;
GO
PRINT @PrintMessage
【问题讨论】:
-
尝试在您的
SET @CN = (SELECT CustomerName FROM @BigCustomer)中使用LIMIT以及其他SET命令。 -
你能提供样本数据和想要的结果吗?如所写,您的
group by声明没有多大意义。您可能不需要任何这些变量... -
@IT可能为 NULL。你从来没有设置它。虽然你确实设置了@CN两次。SET @CN = (SELECT ItemTotal FROM @BigCustomer)-->SET @IT = (SELECT ItemTotal FROM @BigCustomer)?CONVERT(nvarchar(50), @IT)可以使用空值吗? -
这...在我看来不像 mysql
-
这被标记为 MySQL,但语法看起来很像 SQL Server。
标签: sql sql-server sql-server-2012