2017-02-22 10 views
1

したがって、 caseステートメントでクエリを記述しようとしています。私は複数の変数として私のケースステートメントを出力する際に​​問題を抱えています。基本的に私は1列を取って、最初の部分をoutputcolumn1 "FIRST"と最後の4つのcahractersをoutputcolumn2 "LAST"としたい。複数の変数を返すSQL

私はいくつかの研究を試みたが、私の風味には何も触れていない。 私は何かが本当にダムを見下ろすと知っています。

Select * 
Case When a.col_1 is NULL 
-- Grab all but last 4 as "FIRST" 
Then LEFT(b.col_1, len(b.col_1) -4 
-- Grab Last 4 as "LAST" 
AND RIGHT(b.col_1, 4) 
Else LEFT(a.col_1, len(a.col_1) -4 
AND RIGHT(a.col_1, 4) 

end as FIRST,LAST 

From Table_1 as a 
inner join Table_2 as b on a.TableID = b.TableID 

答えて

5

まず、行方不明がある右ここ括弧:LEFT(b.col_1, len(b.col_1) -4

第二には、次の2つのケースのステートメントを使用し、2つの列を返すことはできません。

SELECT *, 
     CASE WHEN a.col_1 IS NULL 
      THEN LEFT(b.col_1, LEN(b.col_1) -4) 
      ELSE LEFT(a.col_1, LEN(a.col_1) -4) 
     END AS FIRST, 
     CASE WHEN a.col_1 IS NULL 
      THEN RIGHT(b.col_1, 4) 
      ELSE RIGHT(a.col_1, 4) 
     END AS LAST 
FROM Table_1 AS a 
INNER JOIN Table_2 AS b 
ON a.TableID = b.TableID 

私はあなたに別の構文を示唆しているが:

SELECT *, 
     COALESCE(LEFT(a.col_1, LEN(a.col_1) - 4), LEFT(b.col_1, LEN(b.col_1) - 4)) AS FIRST, 
     COALESCE(RIGHT(b.col_1, 4), RIGHT(a.col_1, 4)) AS LAST 
FROM Table_1 AS a 
INNER JOIN Table_2 AS b 
ON a.TableID = b.TableID 
+0

私はあなたがここに持っているように巣にcase文を始めたが、私はまだ何かが欠けていた知っていました。ありがとう! – UPGRAYEDD

+0

私は手伝ってうれしいです。 – McNets

関連する問題