ورود

View Full Version : مجموع مقادیر قبلی یک فیلد



MNosouhi
جمعه 02 آبان 1393, 09:13 صبح
با سلام
جدولی به ساختار زیر دارم :


CREATE TABLE [dbo].[SampleTable](
[code1] [int] NOT NULL,
[code2] [int] NOT NULL,
[value] [int] NULL,
CONSTRAINT [PK_a] PRIMARY KEY CLUSTERED
(
[code1] ASC,
[code2] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO


که دارای مقادیر زیر است :

INSERT [dbo].[SampleTable] ([code1], [code2], [value]) VALUES (29, 3, 3)
INSERT [dbo].[SampleTable] ([code1], [code2], [value]) VALUES (43, 14, -3)
INSERT [dbo].[SampleTable] ([code1], [code2], [value]) VALUES (45, 22, -17)
INSERT [dbo].[SampleTable] ([code1], [code2], [value]) VALUES (47, 20, -13)
INSERT [dbo].[SampleTable] ([code1], [code2], [value]) VALUES (50, 1, 35)
INSERT [dbo].[SampleTable] ([code1], [code2], [value]) VALUES (51, 1, 9)
INSERT [dbo].[SampleTable] ([code1], [code2], [value]) VALUES (54, 1, 10)
INSERT [dbo].[SampleTable] ([code1], [code2], [value]) VALUES (54, 18, -10)

می خواهم در یک View ، یک فیلد اضافه کنم که مقادیر آن در هر سطر ، برابر با مجموع مقادیر قبلی فیلد Value باشد . من کد زیر را نوشتم اما جواب نگرفتم ، لطفا راهنمایی بفرمایید :

SELECT *,
(SELECT SUM(Value) AS Expr1
FROM SampleTable AS a1
WHERE (a1.Code1 <= a2.Code1)and(a1.code2 <= a2.code2)) AS SumBefor
FROM SampleTable AS a2

pezhvakco
شنبه 03 آبان 1393, 10:01 صبح
اگه درست فهمیده باشم =>
http://barnamenevis.org/showthread.php?224230-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%DB%8C%DA%A9-%D8%B5%D9%88%D8%B1%D8%AA%D8%AD%D8%B3%D8%A7%D8%A8-%D8%AF%D8%B1-sql2000

MNosouhi
چهارشنبه 14 آبان 1393, 06:20 صبح
اگه درست فهمیده باشم =>
http://barnamenevis.org/showthread.php?224230-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%DB%8C%DA%A9-%D8%B5%D9%88%D8%B1%D8%AA%D8%AD%D8%B3%D8%A7%D8%A8-%D8%AF%D8%B1-sql2000

متشکر ، اما به علت تعداد بالای رکورد ها ، روش مذکور در لینک ، بسیار کند می باشد و در عمل غیر قابل استفاده می باشد .به غیر از جداول موقت راه حل دیگری وجود ندارد؟

اصلا مشکل کد زیر چیه؟

SELECT *,
(SELECT SUM(Value) AS Expr1
FROM SampleTable AS a1
WHERE (a1.Code1 <= a2.Code1)and(a1.code2 <= a2.code2)) AS SumBefor
FROM SampleTable AS a2

N_D
چهارشنبه 14 آبان 1393, 12:51 عصر
در sql 2012


Select
*, SUM(Value) OVER( Order by Code1) as A
from SampleTable