次のSELECT文があります。私が基本的にしようとしているのは、マネージャと年が下のSQLに表示されているものと等しいすべての行を選択し、fcst_decからfcst_decまでの列にこれらの値のいずれかが含まれていないことです。それはいくつかのために見つけることができるようだが、私はまだ列のいずれかに205を含む行を取得しています。ですから、基本的には、decを通る列janがそれらの値の1つを含む行を選択したいと思います。助けてください。私はそれを理解することはできません。私はテーブルデザインがそれを行う最良の方法ではないことを知っていますが、それは私が持っているものなので、私はそれを理解する必要があります。あなたが任意の月の欄に、これらの値(1,2,3,4,5,205,211)を持っていないレコードを取得したい場合は、私は、SQL Server 2008のSELECT where節(複数の列に複数の値があります)
SELECT [fcst_id]
,[fcst_emplname]
,[fcst_emplid]
,[fcst_posid]
,[fcst_mgrid]
,[fcst_sect_id]
,[fcst_year]
,[fcst_jan]
,[fcst_feb]
,[fcst_mar]
,[fcst_apr]
,[fcst_may]
,[fcst_jun]
,[fcst_jul]
,[fcst_aug]
,[fcst_sep]
,[fcst_oct]
,[fcst_nov]
,[fcst_dec]
,[fcst_comments]
FROM [EMS].[dbo].[TEMSFCST]
where fcst_mgrid='00809571' and fcst_year=2016 and
(
fcst_jan not in (1,2,3,4,5,205,211) or
fcst_feb not in (1,2,3,4,5,205,211) or
fcst_mar not in (1,2,3,4,5,205,211) or
fcst_apr not in (1,2,3,4,5,205,211) or
fcst_may not in (1,2,3,4,5,205,211) or
fcst_jun not in (1,2,3,4,5,205,211) or
fcst_jul not in (1,2,3,4,5,205,211) or
fcst_aug not in (1,2,3,4,5,205,211) or
fcst_sep not in (1,2,3,4,5,205,211) or
fcst_oct not in (1,2,3,4,5,205,211) or
fcst_nov not in (1,2,3,4,5,205,211) or
fcst_dec not in (1,2,3,4,5,205,211)
)
私はここで何かが欠けていない限り、あなただけの、これは貧しいスキーマ/テーブルデザインのように思えるサイドノートではand' –
'に' or'を変更する必要があります。日付列(または年が関係ない場合はその月を表すint)と値列、そして 'temsfcst'テーブルにリンクするFK列を持つテーブルを持つ方が良いでしょう。 – Igor
はい、私はそれが貧しいことを知っていますが、それは私が持っているものです。私がとを使用すると、私は行を取得しません。それで、1と5が入っている行を除外していますが、何らかの理由でそれらが常にうまく動作しません。 – dk96m