私はUPDATE
という質問をCTE経由で書いています。
サンプルデータ
DECLARE @LibraryTable TABLE (CheckOut date, CheckIn date, AllowedDuration int, ActualDuration int);
INSERT INTO @LibraryTable (CheckOut, CheckIn, AllowedDuration, ActualDuration) VALUES
(GETDATE(), GETDATE(), 30, 0),
(GETDATE(), GETDATE(), 30, 0),
(GETDATE(), GETDATE(), 30, 0),
(GETDATE(), GETDATE(), 30, 0),
(GETDATE(), GETDATE(), 30, 0);
クエリ
WITH
CTE
AS
(
SELECT
CheckOut
,CheckIn
,ActualDuration
,ABS(CHECKSUM(NEWID())) % 370 AS RandomNumber370
,ABS(CHECKSUM(NEWID())) % 30 AS RandomNumber30
FROM @LibraryTable
)
UPDATE CTE
SET
CheckOut = DATEADD(day, RandomNumber370, '2015-02-01')
,CheckIn = DATEADD(day, RandomNumber370 + RandomNumber30, '2015-02-01')
,ActualDuration = RandomNumber30
;
結果だけで、複数の `update`のステートメントを使用しないのはなぜ
SELECT *
FROM @LibraryTable;
+------------+------------+-----------------+----------------+
| CheckOut | CheckIn | AllowedDuration | ActualDuration |
+------------+------------+-----------------+----------------+
| 2015-09-07 | 2015-09-10 | 30 | 3 |
| 2015-11-25 | 2015-12-16 | 30 | 21 |
| 2015-06-16 | 2015-06-24 | 30 | 8 |
| 2015-11-25 | 2015-12-07 | 30 | 12 |
| 2015-03-25 | 2015-03-29 | 30 | 4 |
+------------+------------+-----------------+----------------+
? –
@ GordonLinoff私は自己が同じテーブルを参照して値を保持する方法を知らない...私はC#から来て、私はforeachループが表示されないので..私は行を歩くと行の値。 – transformer