0
我對db和Sqlserver比較新,並且遇到一些問題。所以,我有一個程序,在這個程序中我使用了一個遊標,並且每當遊標提取時,我都會提供很多局部變量供遊標使用。局部變量在select和groupby在遊標裏面
DECLARE @tempTotalValue TABLE (Id int, IT float, Total float, PlannedDate smalldatetime, PeriodStart smalldatetime)
DECLARE curs CURSOR FOR
SELECT
...,
...,
...,
...,
...
FROM
Order
現在,在遊標內部我正在執行另一個過程(此過程的設計是固定的,不能更改)。該過程返回一些值,我插入到一些表變量,我在我的過程中進一步使用它來計算一些值並返回它。
OPEN curs
FETCH NEXT FROM curs INTO @Id, @IP ,@FromDate, @ToDate, @Length, @Amount
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @tempIT TABLE(TI nvarchar(20), PlannedDate smalldatetime, PeriodStart smalldatetime, PeriodLength smallint, PeriodAmount float)
INSERT INTO @tempIT EXEC IPDates @IP, @FromDate, @ToDate, @Length, @Amount //cannot change this procedure
DELETE FROM @tempIT WHERE (YEAR(PlannedDate) < YEAR(DATEADD(YY, DATEDIFF(yy, 0, GETDATE()), 0))) OR YEAR(PlannedDate) > YEAR(DATEADD(YY, DATEDIFF(yy, 0, GETDATE()), 1));
INSERT INTO @tempTotalValue
SELECT
@Id, // *this is the problem*
0,
PeriodAmount,
PlannedDate,
PeriodStart
FROM
@tempIT
GROUP BY
[email protected] // Not possible but i want to do it
FETCH NEXT FROM curs INTO @Id, @IP, @FromDate, @ToDate, @Length, @Amount
DELETE FROM @tempIT
END
CLOSE curs
DEALLOCATE curs
Select * from @tempTotalValue
END
我面臨的問題是,一個名爲「ID」的局部變量的一個是我的光標,我直接使用,我是回我的程序表變量。現在,我想根據這個ID將我的結果分組。但那不可能。例如,在下面的圖片中,我想按照第4行和第5行進行分組,因爲它們具有相同的ID,並且在將來當我在第二個(IT)列中有一些值時。我想多次顯示一個ID相同的id,並在IT列中顯示所有相同ID的添加。
那麼當您將第4行和第5行組合時,您想要顯示哪個PlannedDate和PeriodStart?當PeriodAmount/Total在兩行上的值不同時,您想要執行什麼操作?當通過對一列進行分組摺疊行時,其值不同的任何其他列必須被聚合或不包括在內。 – 2013-04-06 15:58:15