1

レポートの 1 つの行に 2 つの列があり、SQL テーブルの同じ 1 つの列に基づいて作成したいと考えています。

たとえば、レポートでは次のようになります。

ID | Reason       | SubReason
1  | Did not like | Appearance

SQL テーブルでは、次のようになります。

ID | ReturnReason
1  | Did not like
1  | XX*SR*Appearance
1  | XX - TestData
1  | XX - TestData2

SubReason 列が新しく追加され、現在の SQL クエリは次のようになります。

SELECT ID, ReturnReason AS 'Reason'
FROM table
WHERE LEFT(ReturnReason,2) NOT IN ('XX')

そして今、SubReason の SELECT ステートメントに列を追加したいと思い*SR*ます。ただし、現在の句'XX'では省略されている値も含まれているため、これは機能しません。WHERE

4

1 に答える 1

2
SELECT t.ID, t.ReturnReason AS 'Reason',
SUBSTRING(t1.ReturnReason,7,10000) as 'SubReason '
FROM t
LEFT JOIN t as t1 on t.id=t1.id and t1.ReturnReason LIKE 'XX*SR*%'
WHERE t.ReturnReason NOT LIKE 'XX%'

SQLFiddle デモ

于 2013-10-16T13:45:53.067 に答える