【发布时间】:2019-07-29 10:26:36
【问题描述】:
我需要将一些业务逻辑从 Excel '翻译'到 T-SQL,我很难做到。
这是关于大门的数据,用于计算有多少顾客进出商店。
您需要的所有数据都在下表中:
CREATE TABLE #ResultsTable
(
Datum DATETIME,
window CHAR(10),
countersOUT INT,
countersIN INT,
RESULT INT
)
INSERT INTO #ResultsTable
VALUES ('20180104 08:30:00.000', '08:30', 0, 0, 0),
('20180104 09:00:00.000', '09:00', 2, 1, 1),
('20180104 09:30:00.000', '09:30', 1, 0, 2),
('20180104 10:00:00.000', '10:00', 25, 9, 18),
('20180104 10:30:00.000', '10:30', 45, 41, 22),
('20180104 11:00:00.000', '11:00', 38, 37, 23),
('20180104 11:30:00.000', '11:30', 50, 51, 22),
('20180104 12:00:00.000', '12:00', 21, 24, 19),
('20180104 12:30:00.000', '12:30', 12, 19, 12),
('20180104 13:00:00.000', '13:00', 25, 18, 19),
('20180104 13:30:00.000', '13:30', 35, 27, 27),
('20180104 14:00:00.000', '14:00', 81, 9, 52),
('20180104 14:30:00.000', '14:30', 113, 18, 70),
('20180104 15:00:00.000', '15:00', 116, 34, 71),
('20180104 15:30:00.000', '15:30', 123, 36, 54),
('20180104 16:00:00.000', '16:00', 127, 35, 50),
('20180104 16:30:00.000', '16:30', 103, 19, 47),
('20180104 17:00:00.000', '17:00', 79, 31, 27),
('20180104 17:30:00.000', '17:30', 50, 16, 26),
('20180104 18:00:00.000', '18:00', 28, 11, 17),
('20180104 18:30:00.000', '18:30', 16, 15, 2),
('20180104 19:00:00.000', '19:00', 0, 2, 0),
('20180104 19:30:00.000', '19:30', 0, 0, 0),
('20180104 20:00:00.000', '20:00', 0, 0, 0),
('20180104 20:30:00.000', '20:30', 0, 0, 0),
('20180104 21:00:00.000', '21:00', 0, 0, 0),
('20180104 21:30:00.000', '21:30', 0, 0, 0),
('20180104 22:00:00.000', '22:00', 0, 0, 0)
select * from #ResultsTable
'RESULT' 是应根据 'countersOUT 和 'countersIN' 计算的列。
'countersOUT 和 'countersIN' 是计算所需的 INPUT 数据。
业务用户在 Excel 中创建了一个帮助列来进行计算(AA 列) . . . . . . .从商业角度来看:这是每半小时在店内的顾客数量。
然后,实际计算如下:(截图同样来自 Excel)
现在我的任务是在 T-SQL 中完成这个计算。
业务用户的唯一输入数据是“countersIN”和“countersOUT”,换句话说,它应该可以在 T-SQL 中实现。只是,我不会,所以我才来问我的问题。
最后,我建议您查看一下 Excel 文件(mediafire 链接)http://www.mediafire.com/file/mtdvlgmmbj3f8dd/Example_20190725_SQLforum.xlsx/file
非常感谢您的任何帮助
【问题讨论】:
-
。 .您需要尝试解释正在实施的逻辑。
-
@laurens 它是上限运行总计的一种变体。使用 T-SQL 可以完美实现,但您必须使用递归 CTE 来调整 Excel 中的逻辑。 Conditional SUM on Oracle
-
@LukaszSzozda :这是个有趣的信息,谢谢,我会调查一下
-
您以 sql 表的形式提供的数据将 counterout 和 counterin 列互换。这是正确的吗?
-
给我解释一下。第 11 行的结果为 27,第 12 - 81 行进来,第 9 行出去,所以结果不应该是 27 + 81 - 9?
标签: sql sql-server excel tsql