【发布时间】:2019-05-12 06:20:59
【问题描述】:
这是我的桌子:
CREATE TABLE [dbo].[InfoTable]
(
[Id] INT IDENTITY (1, 1) NOT NULL,
[TimeSpanColumn] NVARCHAR(50) NULL,
[TimeStampColumn] DATETIME NULL,
[TimeStringColumn] NVARCHAR(50) NULL,
[TotalSecColumn] NVARCHAR(50) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
)
我想在 2 个给定日期之间选择 timespans 并将它们子串到另一个表中,如下所示:
Col1 Col2 col3
[hh] | [mm] | [ss]
----------------------
02 55 36
54 32 41
我的存储过程:
CREATE PROCEDURE sumBetweenDates
@QueryFromDate DateTime,
@QueryToDate DateTime
AS
SELECT
SUM(CONVERT(INT, SUBSTRING(TimeStringColumn, 1, 2))) as hh
FROM
InfoTable
WHERE
TimeStampColumn BETWEEN @QueryFromDate AND @QueryToDate
GROUP BY
TimeStampColumn
SELECT
SUM(CONVERT(INT, SUBSTRING(TimeStringColumn, 3, 2))) AS mm
FROM
InfoTable
WHERE
TimeStampColumn BETWEEN @QueryFromDate AND @QueryToDate
GROUP BY
TimeStampColumn
SELECT
SUM(CONVERT(INT, SUBSTRING(TimeStringColumn, 5, 2))) AS ss
FROM
InfoTable
WHERE
TimeStampColumn BETWEEN @QueryFromDate AND @QueryToDate
GROUP BY
TimeStampColumn
它只返回第一次查询的结果。例如:
[hh]
02
54
我怎样才能做到我所说的?
我无法为这些 select 语句分配变量,因为在它们按 timestampcolumn 分组之后可能有多个值
【问题讨论】:
-
您如何确定它只返回一个结果集?您是在使用 Management Studio 执行该过程还是使用其他客户端?
-
@Damien_The_Unbeliever 我只是在我的 c# 程序中执行了存储过程,并用它只显示一列的结果填充了我的 datagridview。
-
你想总结什么?
标签: sql sql-server select insert