0

int 値を持つ 6 つの列を持つテーブルがあります AreaID は Forigen キーです。

    B1 H1 F1 A1 U1 AreaID
    0  3  -1 40 -1 120
    34 7  -1 3  -1 120

私ができる必要があるのは、上記の列の個別のリストを返す select ステートメントを取得することです WHERE AreaID = 120 ただし、値が -1 の列は割引します

したがって、上記の例は理想的には次の列を返します: B1、H1、A1、

誰でもこれで私を助けることができますか?

どうもありがとう

ジェイソン

4

1 に答える 1

0
SELECT DISTINCT
   NULLIF(B1, -1) AS B1,
   NULLIF(H1, -1) AS H1,
   NULLIF(F1, -1) AS F1,
   NULLIF(A1, -1) AS A1,
   NULLIF(U1, -1) AS U1
FROM
   MyTable
WHERE
   AreaID = 120

-1 の値を破棄するには、別の値に変更する必要があります。SQL の列を無視することはできません。マスクするだけです。私の SQL では、DISTINCT の -1 値は無視されます。

したがって、H1 行の 1 つに -1 があったとしましょう。-1 ではない行にそれを含める必要があります。したがって、これを行うには、クライアントで行う必要があります。「行に -1 が存在する列を無視する」という意味でない限り、これはまったく SQL ではありません。繰り返しますが、これはクライアント側の処理です

tl:dr: SQL では動的列を使用できません。動的 SQL を使用する場合を除きます。

SELECT * [except columnA] FROM tableA? を使用して列を除外する SQLも参照してください。似たようなもののために。

于 2013-05-20T13:08:26.897 に答える