У меня есть проект секундомера в C #.Я должен начать запись времени и сохранить его в своей базе данных в столбце Timespan
.У меня также есть столбец Timestamp
, в котором записывается дата, когда было записано время.
Теперь я хочу иметь процедуру сохранения (или что-нибудь еще), чтобы передать программе дату, и я хочу, чтобы моя программа искалабазы данных и суммировать ВСЕ значения в каждом соответствующем столбце Timespan
на указанную дату.Другими словами, если я назначу ей дату, я хочу, чтобы моя программа искала все Timestamp
ячейки столбца, и если есть одна или несколько отметок времени, равных указанной дате, я хочу, чтобы программа продолжила и проверила все связанные с ними «промежутки времени».столбцы и суммируйте их.
Мой код работает, только если есть только 1 значение метки времени, равное данной дате, и кричит на меня, если есть два или более.это моя проблема.Это ошибка, с которой я получаю:
Дополнительная информация: Подзапрос возвратил более 1 значения.Это недопустимо, если подзапрос следует =,! =, <, <=,>,> = Или когда подзапрос используется в качестве выражения.Я знаю причину следующей ошибки. Я просто не знаю решения
Пожалуйста, не пытайтесь исправить мой код, предложите мне новый способ, если можете.спасибо.
Моя процедура хранения сумм:
CREATE PROCEDURE SumOnDateReport
@QueryDate nvarchar(50)
AS
DECLARE @total_sec INT
DECLARE @HourTime INT
DECLARE @MinTime INT
DECLARE @SecTime INT
SET @HourTime = (SELECT CONVERT(INT, SUBSTRING(TimeStringColumn, 1, 2))
FROM InfoTable
WHERE TimeStampColumn = @QueryDate)
SET @MinTime = (SELECT CONVERT(INT, SUBSTRING(TimeStringColumn, 3, 2))
FROM InfoTable
WHERE TimeStampColumn = @QueryDate)
SET @SecTime = (SELECT CONVERT(INT, SUBSTRING(TimeStringColumn, 5, 2))
FROM InfoTable
WHERE TimeStampColumn = @QueryDate)
SET @total_sec = @HourTime * 3600 + @MinTime * 60 + @SecTime
INSERT INTO InfoTable(TotalSecColumn) VALUES (null)
UPDATE InfoTable
SET TotalSecColumn = @total_sec
WHERE TimeStampColumn = @QueryDate
SELECT TotalSecColumn
FROM InfoTable
WHERE TimeStampColumn = @QueryDate
Мой стол:
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)
);