2

以下の SELECT のコメント アウトされた部分の何が問題になっていますか?
CASE...END 全体のコメントを外すと、SELECT が無効になります。
私が望むのは、配送先住所があるかどうかに応じて、理想的には条件を繰り返したり、各フィールドに COALESCE を使用したりせずに、住所フィールドの 1 つのグループまたは別のグループを取得することです。SQL Server 2008 R2 を使用しています。
ありがとう !

  SELECT a, b, c,
  --        CASE x is null 
  --            THEN d, e, f,
  --            ELSE g, h, i,
  --        END
        k, l, m
  FROM sometable
4

3 に答える 3

2

x の条件を where 句に入れてから結合することを検討してください

select a,b,c,d,e,f from table where x is null
union
select a,b,c,g,h,i from table where x is not null

case には WHEN が必要です。私はいつもこの構造を使用しています

CASE ...
WHEN ...
THEN ...
ELSE ...
END AS Fieldname

5 つすべてが存在する必要があります。1 つの出力フィールドを定義するために使用できます。その中でもちろん合体できますが、フィールドの配列は返されません

EDIT:ELSEは実際には必要ありません。以下の情報に基づいたコメントを読んでください

于 2013-07-02T08:48:52.047 に答える
2

このクエリは正しい答えを提供し、変更も簡単です

select
    s.a, s.b, s.c,
    a.f1, a.f2, a.f3,
    s.k, s.l, s.m
from sometable as s
    outer apply (
        select s.d as f1, s.e as f2, s.f as f3 where s.x is null
        union all
        select s.g as f1, s.h as f2, s.i as f3 where s.x is not null
    ) as a

SQL フィドルの例

于 2013-07-02T08:51:10.683 に答える
2

You're missing a WHEN, and you're only allowed to return a single value from a CASE expression:

SELECT a, b, c,
      CASE WHEN x is null 
          THEN d
          ELSE g
      END,
      CASE WHEN x is null 
          THEN e
          ELSE h
      END,
      CASE WHEN x is null 
          THEN  f
          ELSE i
      END,
    k, l, m
FROM sometable

This also assumes the types of d and g are compatible, as are (e,h) and (f,i)

于 2013-07-02T08:51:26.467 に答える