あなたがFIにしたい場合は
+------+----------+---------------------+
| Tag | Location | DueDate |
+------+----------+---------------------+
| 1 | 5 | 01.01.2017 00:00:00 |
| NULL | NULL | 07.01.2017 00:00:00 |
| NULL | NULL | 14.01.2017 00:00:00 |
| NULL | NULL | 21.01.2017 00:00:00 |
+------+----------+---------------------+
:
CREATE TABLE Table1 (
Tag INT,
Location INT,
DueDate DATE
);
CREATE TABLE Table2 (
MyDate DATE
);
INSERT INTO Table1 VALUES
(1, 5, NULL);
INSERT INTO Table2 VALUES
('2017-01-01'),
('2017-01-07'),
('2017-01-14'),
('2017-01-21');
INSERT INTO Table1 (Tag, Location, DueDate)
SELECT CASE WHEN RN = 1 THEN Tag END,
CASE WHEN RN = 1 THEN Location END,
MyDate
FROM
(
SELECT T1.Tag,
T1.Location,
T2.MyDate,
ROW_NUMBER() OVER (PARTITION BY Tag ORDER BY Tag) AS RN
FROM Table1 T1 CROSS JOIN Table2 T2
) SQ;
DELETE FROM Table1 WHERE DueDate IS NULL;
SELECT *
FROM Table1;
結果:あなたは何を意味するか、これが仕事をしますTag
とLocation
列、使用LL:
INSERT INTO Table1 (Tag, Location, DueDate)
SELECT T1.Tag,
T1.Location,
T2.MyDate
FROM Table1 T1 CROSS JOIN Table2 T2;
DELETE FROM Table1 WHERE DueDate IS NULL;
SELECT *
FROM Table1;
ここでの基準は何ですか?あなたの望む結果のそれぞれの新しいレコードは、1と5を表示しません...最初のものだけ。あなたはここでどのような論理を使っていますか/あなたはよりよく説明できますか?表1にさらに多くのレコードがある場合はどうなりますか?どのレコードがどの日付になるでしょうか? – JNevill
タグが正しく!これはどちらですか? SQL ServerまたはMySQLは、両方にすることはできません! – Eric