0

質問の説明がわかりません (タイトルが適切でない可能性があります)。

ここにあります:

次のようなテーブルがあります。

item   type stockdate    saledate

1      1    2012-11-06   2012-11-05

2      2    2012-11-06   2012-11-07

3      2    2012-11-06   2012-11-05

では、上の表から選びたいと思います。

次の 2 つの条件があります。

  1. typeアイテムの が の場合、1とにかくこのアイテムを表示します
  2. typeアイテムの が2であるが、である場合、saledate >= stockdate私は表示します。そうでなければ、私は表示されません

上の表から、show only item 1 and 2アイテム 1 には がありtype of 1、アイテム 2 にはtype of 2がありますがsaledate >= stockdate、アイテム 3 は であるため表示できませんsaledate<stockdate

選択クエリを作成するにはどうすればよいですか?

MS SQL Server を使用しています。

4

5 に答える 5

1

アイテムのタイプが 1 の場合、とにかくこのアイテムを表示します

アイテムのタイプが 2 であるが、その販売日 >= 在庫日である場合、私は表示します。そうでなければ、私は表示されません

SELECT item, saledate, stockdate
FROM
(
    SELECT
      item,
      CASE
        WHEN type = 1 THEN 1
        WHEN type = 2 AND saledate >= stockdate THEN 1
        ELSE 0
      END ShowOrNot,
      stockdate, 
      saledate
    FROM TableName
) t
WHERE ShowOrNot = 1

PS: 読みやすくするために、サブクエリを使用して記述しました。

SQL フィドルのデモ

于 2012-11-06T13:59:55.360 に答える
1

最も簡単な解決策は、

SELECT  *
FROM    tableName
WHERE   (type = 1) OR
        (
            type = 2 AND
            saledate >= stockdate
        )
于 2012-11-06T14:00:14.407 に答える
0
select * from myTable where type = 1 or (type=2 and saledate >= stockdate)
于 2012-11-06T14:02:13.583 に答える
-1

このクエリはどうですか:

Select * from TableName
Where SelDate>=(Case when Type=1 then SelDate else StockDate End)
于 2012-11-06T14:02:33.107 に答える
-1
select * 
from [table]
where type=1 or (saledate >= stockdate)
于 2012-11-06T14:00:19.430 に答える