一部のお客様は古いデータベースを使用していますが、新しい顧客用に別の列を追加する必要があります。私のプログラムは、新しい列がある場合はこれを照会し、そうでない場合はNULLを使用します。SQL - OLEQueryに列が存在する場合は選択
C#とOLEQueryこれは、これまでに取り組んでいるの使用:
string sql = @"SELECT i.[ID] AS cID,
pg.[Name],
pg.[ID] AS pgid,
i.[time],
defect = CASE i.[defect] WHEN 0 THEN 'OK' WHEN 1 THEN 'NOK' END,
FROM inspection AS i WITH (NOLOCK) INNER JOIN programs as pg ON i.programid = pg.[ID]
WHERE i.[time] BETWEEN ... ///SOME MORE CODE IS FOLLOWING HERE!
";
をしかし、今、私はこれに(/ない場合もあり)既存の列timeToを追加したいです。
string sql = @"SELECT i.[ID] AS cID,
pg.[Name],
pg.[ID] AS pgid,
i.[time],
defect = CASE i.[defect] WHEN 0 THEN 'OK' WHEN 1 THEN 'NOK' END,
timeTo = CASE i.[timeTo] WHEN EXISTS THEN i.[timeTo] ELSE NULL END
FROM inspection AS i WITH (NOLOCK) INNER JOIN programs as pg ON i.programid = pg.[ID]
WHERE i.[time] BETWEEN ... //SOME MORE CODE IS FOLLOWING HERE!
";
この「存在する」キーワードは難しいですが、「1行」解決策はありますか?私はいくつかのケース選択ソリューションを見つけました。このソリューションを必要とするので、異なる列のいくつかの場所でケース選択ソリューションが適合しません。 ご協力ありがとうございます
どのrdbmsを使用していますか?例えばsql-server、mysqlなど? – BeanFrog
申し訳ありませんが、それはsql-serverです。 –
'exists'によって、' null'ではないのですか? – JohnHC