私は、関連する列があることで、テーブルを持っている:ある検索で行が見つからないかどうかを確認する方法を教えてください。
CREATE TABLE [dbo].[PrmsBlotter](
[ID] [int] IDENTITY(1,1) NOT NULL,
[BBox] [varchar](250) NOT NULL,
[RunDateStart] [datetime] NOT NULL,
[RunType] [varchar](50) NOT NULL,
[TestDateFrom] [date] NULL,
...
)
にBBoxは、ブラックボックスの名前です。 RunTypeはLiveまたはBacktestingにすることができます。各ライブ実行は、バックテストのTestDateFromがライブテストのRunDateStartと等しくなるようにバックテストを取得します。
一致するバックテストがないライブがあるかどうかを知る必要があります。私がこれまで持っている:
SELECT t1.BBox, t1.dd, t2.BBox, t2.dd FROM
(SELECT BBox, CONVERT(date,RunDateStart) as dd FROM [PrimusGroup].[dbo].[PrmsBlotter]
WHERE RunType = 'Live') t1
LEFT JOIN
(SELECT BBox, CONVERT(date,TestDateFrom) as dd FROM [PrimusGroup].[dbo].[PrmsBlotter]
WHERE RunType = 'Backtesting') t2
ON (t1.BBox = t2.BBox AND t1.dd = t2.dd)
私は、生活のための2つのクエリの1に参加backtests用と等しいBBOX名にそれらを参加し、バックテストのtestdatefromに等しいrundatestartさんが住んでいます。それは私が立ち往生している場所です。私はどこにマッチがないと言うのか分からない。
これを行う方法はありますか?
選択しない何1の意味ですか? – bkarj
'exists 1'は何も意味しません。' exists() 'と' not exists() 'は実際には列を返さないからです。この文脈では 'select *'や 'select null'と同じです。 'exists()'を使うとき、 'select 1'と' select * 'の間に**実行時**のパフォーマンス差はありません。 'select 1'を使うと、クエリのコンパイル中にそのテーブルの不要なメタデータを検査する必要がなくなります。 [EXISTSサブクエリ:SELECT 1対SELECT * - Conor Cunningham](http://www.sqlskills.com/blogs/conor/exists-subqueries-select-1-vs-select/) – SqlZim