Я задал свой вопрос в this page, но он не был разрешен.Как проверить какое-то условие на вычисленном столбце?
У меня есть таблица с именем Circulation
Имя столбца (В библиотечной системе управления.): - IsReturned
, Delay
StartDate
, Time
и EndDate
Я сэкономить Checkin
и Checkout
в этой таблице таким образом, что существует столбец с именем IsReturned
, который при оформлении книги составляет equal
до false
, а когда книга возвращается в библиотеку checkin
, она равна true
.
Я также хочу рассчитать задержку выписки.
Мой столбец в этой таблице: StartDate
, Time
и EndDate
(вычисленный столбец «StartDate» + «Time»). Я хочу рассчитать задержку, пока документ не вернется. (до тех пор, пока столбец IsReturned
не станет ложным) с использованием вычисленного столбца.
Мне нужно, чтобы столбец IsReturned
был прав, значение столбца Delay не должно меняться, но если оно не должно обновляться.
Я использую приведенный ниже код, чтобы обновить столбец «Задержка», если IsReturned = 0
, но как я могу изменить этот код на дон t change the delay value if the
IsReturned = 1`.
SELECT (DATEDIFF(minute,DATEADD(day, [Time],[StartDate]),GETDATE()))
FROM dbo.Circulation
WHERE Id= @Id
Обновление:
Моя таблица такова:
ALTER TABLE [dbo].[Circulation](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Document_Id] [int] NULL,
[Person_Id] [int] NULL,
[Librarian_Id] [int] NULL,
[StartDate] [datetime] NULL,
[IsReturned] [bit] NULL,
[EndDate] AS ([StartDate]+[Time]),
[Time] [int] NULL,
[Delay] AS (CASE WHEN [IsReturned] = 1 THEN ******* ELSE (DATEDIFF(minute,DATEADD(day, [Time],[StartDate]),GETDATE()))
Я думаю, вы не понимаете мой стол еще. EndDate также является вычисленным столбцом, и это «StartDate + Time» (это время пришло из C# Program в минуту). Так что если в книге Checkedout из библиотеки StartDate и The EndDate есть значение, но IsReturned является ложным, а когда в книге Checkedin значение IsReturned равно true. Я хочу, чтобы вычислить столбец «Delay» от вычисляемого столбца, так что: 1. Когда IsReturned = 0 (книга была Выдана) Задержка должна вычислить по формуле:
(DATEDIFF(minute,DATEADD(day, [Time],[StartDate]),GETDATE())
2. Когда IsReturned = 1 (книга проверена) Задержка не должна изменяться. это означает, что если оно равно нулю, оно должно быть нулевым, но если нет, значение не должно меняться к нулю.
Так Checkout фактический столбец? или текст столбца IsReturned? –
Значение вычисленного столбца всегда вычисляется из значений, содержащихся в других столбцах. Таким образом, ваше требование * не изменять * значение этого столбца, если IsReturned = 1 противоречит самой природе вычисленного столбца. В вычисляемом столбце нет значения, кроме значения, которое вычисляется выражением. –
@Pedram_Parsian: - во-первых, когда задавайте вопрос, включите все соответствующие детали, чтобы люди лучше поняли, что именно вы хотите, и что вы достигли до тех пор и где вы застряли? Лучше прочитайте это http://stackoverflow.com/help/how-to-ask – HaveNoDisplayName