SQLServer2005を使用します。
データは2つの別々のテーブルにあり、書き込み権限しか与えられていません。
データは次のようになります。
DateTime1 | DateTime2
-----------------------
2012-06-01 | 2012-06-01
2012-06-02 | 2012-06-02
2012-06-04 | 2012-06-05
2012-06-02 | NULL
NULL | 2012-06-05
2012-06-04 | 2012-06-05
NULL | NULL
私がやろうとしているのは、DateTime1とDateTime2に値が含まれ、DateTime1に日付が含まれ、DateTime2がNULL、DateTime1がNULL、DateTime2に値が含まれる値をカウントできるようにすることです。
全体的に、DateTime1がNullでDateTime2がnullになるのを避けようとしています。
私のwhereステートメントは次のようになります。
Where (DateTime1 is not null or DateTime2 is not null)
唯一の問題は、両方がnull値である場所がまだ表示されていることです。なぜこれが起こっているのか、それを解決する方法を知っている人はいますか?
ありがとう
@Lamak の要求に応じて完全なクエリを編集
;With [CTE] As (
Select
TH.ID
,AMT
,Reason
,EffDate
,DateReq
,CS_ID
,ROW_NUMBER()
Over (Partition By ID Order By [pthPrimeKey] Desc) as [RN]
From
DateTime1Table as [MC] (nolock)
Left Join History as [TH] (nolock) on [TH].[ID] = [MC].[ID]
Left Join Trans as [SUB] (nolock) on [SUB].TransactionReasonCode = [TH].Reason
Left Join Renew as [RM] (nolock) on [MC].ID = [RM].ID
Where
([MC].[DateTime1] is not null or [RM].[DateTime2] is not null)
And [PostingDate] = DATEADD(dd, datediff(dd, 1, GetDate()),0)
)
SELECT
[ID]
,[AMT] as [Earned]
,[Reason] as [Reason]
,[EffDate] as [Eff]
,[DateReq] as [Date_Cancel_Req]
,[pthUserId_Number] as [CSR]
FROM [CTE]
Where RN <= 1