0

私はタイムシートと呼ばれるテーブルを持っています。

  ID Status ProjId ActId  Date
    1  pending  1     1     2014-aug-07
    2  denied   1     2     2014-aug-08
    3  saved    1     3     2014-aug-09
    4  approved 1     4     2014-aug-10

以下のクエリを使用して、目的の結果を取得しました。

SELECT * from tblTimesheet 
WHERE DATEPART(wk,spentDate) = 32 AND ((timesheetstatus = 'Pending' or timesheetstatus = 'Approved') and (timesheetstatus <> 'Saved' or timesheetstatus <> 'Denied'))

上記のクエリの期待される結果は 0 ですが、結果は 1 です。

 5  pending  1     1     2014-aug-11
    6  pending  1     2     2014-aug-12
    7  approved 1     3     2014-aug-13
    8  approved 1     4     2014-aug-14

この場合、私のクエリは機能します。

SELECT * from tblTimesheet 
WHERE DATEPART(wk,spentDate) = 32 AND ((timesheetstatus = 'Pending' or timesheetstatus = 'Approved') and (timesheetstatus <> 'Saved' or timesheetstatus <> 'Denied'))

上記のクエリの期待される結果は 1 です。結果は 1 です。

mssql で上記の要件のクエリを記述する方法。シナリオ 1 は機能しますが、シナリオ 2 は機能しません。望ましい結果を達成する方法。どんな助けでも大歓迎です!!!

4

3 に答える 3

0

これを試して、

Select * from 
(
SELECT * from tblTimesheet 
WHERE DATEPART(wk,spentDate) = 32 
AND (timesheetstatus = 'Pending' or timesheetstatus = 'Approved')
)tbl 
where
 (timesheetstatus <> 'Saved' or timesheetstatus <> 'Denied'
于 2014-12-16T12:49:27.747 に答える