お試しください。これは、ハードコード化されたアプローチです:
INSERT INTO <yourtable> (day, key, value)
SELECT DISTINCT t1.day AS day, 'Bike' as key, 20 as value
FROM
<yourtable> AS t1
LEFT OUTER JOIN
(SELECT day, key FROM <yourtable> WHERE key='Bike') AS t2
ON t1.day = t2.day
WHERE t2.key IS NULL;
それとも、あなたが活動して値を選択することができますストアドプロシージャ(使用してくださいすることができた場合:
CREATE PROCEDURE dbo.InsertActivityWhereMissing
@activity VARCHAR(50)
, @activityValue INT
AS
BEGIN
INSERT INTO <yourtable> (day, key, value)
SELECT t1.day AS day, @activity as key, @activityValue as value
FROM
(SELECT day FROM <yourtable> GROUP BY day) AS t1
LEFT OUTER JOIN
(SELECT day, key FROM <yourtable> WHERE key = @activity) AS t2
ON t1.day = t2.day
WHERE t2.key IS NULL;
END
をこのように、あなたは同じことを行うことができますロジックにより、特定の"activity"
のアクション(私はちょうどそのように命名していますが、私はRun
、Bike
、Swim
または何か他のものに言及しています)
は、水泳もフラグを立てされなければならない - 月&火のために、右? –
I wその値を選ぶことができます。だから私は、どの日に自転車が含まれていないかを見て、その日にそれを加えます。 – hoakey
あなたはあらかじめこの値を知っていませんか?ユーザー対話/判断とは、少なくとも2つのクエリを意味します.1つはリストを表示し、2つ目は変更を実装します。 –