Ich habe zwei Tabellen angezeigt werden soll. Wie kann ich Drucken so etwas wie:Verwendung Cursor sie Zeilen und Gruppe, die durch eine Spalte mit variabler
SalesOrderNumber1 (3 items) was shipped.
SalesOrderNumber2 (4 items) was shipped.
SalesOrderNumber3 (2 items) was shipped.
so dass Produkte mit den gleichen SalesOrderID
gruppiert werden können und gezählt? Diese ist das, was ich für den Cursor bekam:
DECLARE
@salesOrderID INT,
@salesOrderNum NVARCHAR(25),
@dueDate DATETIME,
@status tinyint,
@message varchar(80),
@numDetail INT,
@count INT = 0,
@astatus varchar(10);
DECLARE salesReportCursor CURSOR
FOR
select s.SalesOrderID, SalesOrderNumber,DueDate, Status
FROM [Sales].[SalesOrderDetail] s
join Sales.SalesOrderHeader h
on s.SalesOrderID=h.SalesOrderID
where
h.DueDate between '2008-08-01' and '2008-08-31'
group by SalesOrderNumber,s.SalesOrderID,DueDate, Status
Order by SalesOrderNumber desc
FOR READ ONLY
OPEN salesReportCursor
FETCH NEXT from salesReportCursor
INTO @salesOrderID, @salesOrderNum , @dueDate , @status;
WHILE @@FETCH_STATUS = 0
BEGIN
set @numDetail= 1
if @salesOrderNum [email protected]
set @[email protected]+1
Set @astatus=
case when @status=1 then 'In process'
when @status=2 then 'Approved'
when @status=3 then 'Backordered'
when @status=4 then 'Rejected'
when @status=5 then 'Shipped'
when @status=6 then 'Cancelled'
end
Select @message=cast(@salesOrderNum as varchar)
+' ('+ cast(@numDetail as varchar)+' items) due '+
cast(@dueDate as varchar) +' is '+ @astatus
set @[email protected]+1
Print @message
FETCH NEXT from salesReportCursor
INTO @salesOrderID, @salesOrderNum , @status;
END
CLOSE salesReportCursor
DEALLOCATE salesReportCursor
Was mein Ergebnis wie folgt aussieht:
SalesOrderNumber1 (2 items) was shipped.
SalesOrderNumber2 (2 items) was shipped.
SalesOrderNumber3 (2 items) was shipped.
Ich denke, das wegen war nach dem BEGIN, wo ich @numdetail
zunächst als 1 für jede Zeile stellen Sie dann addiere es durch 1. Ich frage mich, wie man Produkte mit demselben SalesOrderID
gruppiert und zählt?
Danke! Das war sehr hilfreich. –