2

可能であれば、2 つのクエリを 1 つに結合しようとしています。これが私がやりたいことです。

  1. FDetailというテーブルからすべて(*)を選択します
  2. TransactionDate が 2007 年 1 月 1 日から 2015 年 1 月 1 日の間である場合
  3. AND WHERE ComNum=1090084785010
  4. AND RecID (RecID は列の名前)= 32375 および RecID=11174 のレコード全体を取得します
  5. AND RecID=24425 のレコードをスキップ

私はこのようなことを試しましたが、これは間違っています:

SELECT * FROM FDetail 
WHERE TransactionDate >= #01/01/2007#
AND TransactionDate <= #01/01/2015#
AND ComNum=1090084785010
AND RecID=32375 
AND RecID=11174 
AND NOT RecID=24425
ORDER BY ASC

これで、2 つのクエリから実行できますか?

Query 1:
SELECT * FROM FDetail 
WHERE ComNum=1090084785010
AND TransactionDate >= #01/01/2007#
AND TransactionDate <= #01/01/2015#
ORDER BY ASC 

Query 2:
SELECT * FROM FDetail 
WHERE TransactionDate >= #01/01/2007#
AND TransactionDate <= #01/01/2015#
AND RecID=32375
AND RecID=11174 
AND NOT RecID=24425
ORDER BY ASC 

これはMS Accessデータベース用ですが、MS SQLでもそれを行う方法を知りたいです(唯一の違いが日付の#でない限り)

いつものように、あなたが私を提供してくれてありがとう。私はこのコミュニティと、他の人を助けようとしている素晴らしい人たちすべてにとても感謝しています.

4

6 に答える 6

3
SELECT * FROM FDetail 
WHERE 
    TransactionDate >= #01/01/2007#
AND TransactionDate <= #01/01/2015#
AND (
        (ComNum=1090084785010 AND RecID <> 24425)
    OR  (RecID=32375 OR RecID=11174)
    )
ORDER BY ASC

それが役に立てば幸いです、rgd​​s。

于 2012-06-01T16:10:44.283 に答える
2

(Accessで)次のようなものが必要なようです。

SELECT * FROM FDetail  
WHERE TransactionDate >= #01/01/2007# 
AND TransactionDate <= #01/01/2015# 
AND (ComNum=1090084785010 OR RecID=32375 OR RecID=11174)
AND RecID<>24425 
ORDER BY ASC 

SQLServerでの違いはわかりません。

これは、@Sebasが受け入れた回答と論理的に同等です。

于 2012-06-01T16:16:36.580 に答える
0
SELECT * FROM FDetail
WHERE ComNum=1090084785010
AND TransactionDate >= #01/01/2007#
AND TransactionDate <= #01/01/2015#

UNION

SELECT * FROM FDetail 
WHERE TransactionDate >= #01/01/2007#
AND TransactionDate <= #01/01/2015#
AND RecID=32375
AND RecID=11174 
AND NOT RecID=24425
ORDER BY ASC
于 2012-06-01T16:45:50.583 に答える
0

#とは別に、MySQLAND RecID <> 24425の代わりに記述する必要があります。AND NOT RecID=24425これはあなたの知識のためです。

ただし、その部分を書い(RecID=32375 OR RecID=11174)てスキップすることはできますNOT

したがって、クエリは次のようになります-

SELECT * FROM FDetail  
WHERE TransactionDate >= #01/01/2007# 
AND TransactionDate <= #01/01/2015# 
AND (ComNum=1090084785010 OR RecID=32375 OR RecID=11174)
AND RecID<>24425 
ORDER BY ASC 
于 2012-06-01T16:12:21.177 に答える
0

これを試して:

    SELECT * FROM FDetail
    WHERE (TransactionDate BETWEEN '01/01/2007' AND '01/01/2015')
    AND ( RecID IN (32375, 11174)
        OR (ComNum=1090084785010 AND RecID != 24425)
        );
于 2014-02-06T14:25:58.723 に答える
0

以下を試してください:
SELECT * FROM FDetail
WHERE TransactionDate >= #01/01/2007# AND TransactionDate <= #01/01/2015#)
AND (ComNum=1090084785010 OR (RecID=32375 AND RecID=11174 AND NOT RecID=24425) ))
ASC による注文;

日付範囲に「BETWEEN」演算子を使用し、RecID リストに「IN」演算子を使用してこれをクリーンアップできますが、使用しているものに基づいて回答を投稿しました。

必要でない場合でも、長い比較で括弧を使用すると常に役立ちます。

于 2014-02-07T01:08:39.860 に答える