2

SQLServer2000の使用

表1

ID date value

001 23/01/2012 100
002 25/02/2012 200
....

表2

Id date value

001 01/01/2012 200
001 02/01/2012 100
...
001 23/02/2012 200
...
001 31/03/2012 100
002 ....
.....

table2の値を選択したいのですが、idとdateがtable1と一致している場合、値はtable1から表示されます

ID日付値

001 01/01/2012 200
001 02/01/2012 100
...
001 23/02/2012 100 'matching id and date from table1
...
001 31/03/2012 100
002 ....
.....

これを行う方法。

クエリのヘルプが必要

期待される出力

4

2 に答える 2

1

table2の行と同じIDと日付を持つtable1に複数の行がないことを前提とすると(たとえば、id / dateがtable1の一意の/主キーである場合)、次のように機能します。

SELECT
    table2.id,
    table2.date,
    ISNULL(table1.value, table2.value) AS value
FROM table2
    LEFT OUTER JOIN table1 ON table2.id = table1.id
        AND table2.date = table1.date

table1の複数の行がtable2の行と一致する可能性がある場合は、使用する個別の値を集計して決定する必要があります。または、平均、最小、または最大を取得する必要があります。

于 2012-05-31T08:17:40.327 に答える
1
SELECT DISTINCT Table2.ID, Table2.date,
            CASE
                WHEN Table1.ID = Table2.ID
                     AND Table1.date = Table2.date THEN Table1.value
                ELSE Table2.value
            END
FROM Table1, Table2

編集

SELECT n_t.n_ID,
       n_t.n_date,
       n_t.n_value
FROM
  (SELECT Table2.ID AS n_ID,
          Table2.date AS n_date,
          CASE
              WHEN Table1.ID = Table2.ID THEN CASE
                                                  WHEN Table1.date = Table2.date THEN Table1.value
                                                  ELSE Table2.value
                                              END
          END AS n_value
   FROM Table1,
        Table2) AS n_t
WHERE n_t.n_value IS NOT NULL
于 2012-05-31T09:21:11.403 に答える