【发布时间】:2016-03-29 10:59:06
【问题描述】:
我希望设计一个查询,其中计算将单元格中的值与同一列中前一个单元格中的值进行比较,另一个计算使用先前的计算结果来引用前一个单元格进行计算.数据将按以下示例图像中的以下顺序排列 - 材料、工厂和年周
从下图中,蓝色列标题代表原始数据,黄色列标题代表计算行。
计算行的公式如下:
- 首先? = IF(AND(B2=B1,C2=C1),"否","第一个")
- 实际可用 = IF(F2="First",D2-E2,G1-E2)
根据我的调查,LEAD 和 LAG 函数可以帮助实现这一点,但由于我仅限于 SQL Server 2008 R2,因此我无法使用它们。请找到创建表的查询。
CREATE TABLE ZDAYS ([YearWeek] VARCHAR(7),
[Material] VARCHAR(3), [Plant] VARCHAR(3),
[Inventory] INT, [Demand] INT)
INSERT INTO ZDAYS VALUES ('2015-42', 'ABC', '101', 20, 5)
INSERT INTO ZDAYS VALUES ('2015-43', 'ABC', '101', 20, 3)
INSERT INTO ZDAYS VALUES ('2015-44', 'ABC', '101', 20, 2)
INSERT INTO ZDAYS VALUES ('2015-42', 'ABC', '201', 30, 10)
INSERT INTO ZDAYS VALUES ('2015-43', 'ABC', '201', 30, 8)
INSERT INTO ZDAYS VALUES ('2015-44', 'ABC', '201', 30, 4)
INSERT INTO ZDAYS VALUES ('2015-42', 'XYZ', '101', 10, 3)
INSERT INTO ZDAYS VALUES ('2015-43', 'XYZ', '101', 10, 2)
INSERT INTO ZDAYS VALUES ('2015-44', 'XYZ', '201', 20, 4)
最终数据输出
YearWeek Material Plant Inventory Demand First? Actual Available
2015-42 ABC 101 20 5 First 15
2015-43 ABC 101 20 3 No 12
2015-44 ABC 101 20 2 No 10
2015-42 ABC 201 30 10 First 20
2015-43 ABC 201 30 8 No 12
2015-44 ABC 201 30 4 No 8
2015-42 XYZ 101 10 3 First 7
2015-43 XYZ 101 10 2 No 5
2015-44 XYZ 201 20 4 First 16
【问题讨论】:
-
您应该在问题中包含您想要的结果。问题不应依赖于外部网站。
-
嗨@GordonLinoff,因为我是新来的,你能告诉我你想看到最终结果的格式吗?我附上了我所期望的示例图像,但我不知道如何在此处以行和列格式发布数据。
-
您可以在一行的开头放置四个空格以获得表格或代码格式。或者,您可以突出显示几行并单击
{}。 -
嗨@GordonLinoff,我已经添加了我想看到的最终输出。感谢您的帮助。
标签: sql excel tsql sql-server-2008-r2 excel-formula