2016-10-13 8 views
0

私の現在のクエリの式はここにあります。しかし、ステートメントの最後にエラーを検出しました。正しい構文が見つかりませんでした。Q:SQL文ですか?どこから注文する?

は私の公式です。私は何の誤りもなく注文を挿入する場所を知りたい。あなたはCTEの中

、ORDER BYを使用することはできません。しかし、すべてのCTEと、すべてのUNION ALLの後、最後のSELECTを以下でORDER BYを使用すると、ここに

よう
.... 
union all 

select 
     [NAME] 
    , [BRAND] 
    , [REFERENCE] 
    , [COMMENT] 
from cteTextRow 
ORDER BY .....; 

に適合します

select * from #source; 

with cteNumericRef as 
(
    select [NAME],[BRAND],[REFERENCE] 
    from #source 
    where ISNUMERIC([REFERENCE]) = 1 
) 

, cteCheckRow as 
(
) 

, ctePairedRow as 
(
    select 
      num_ref.[NAME] 
     , num_ref.[BRAND] 
     , num_ref.[REFERENCE] 
     , row_number() over (partition by num_ref.[REFERENCE] order by num_ref.[NAME]) as [Pair_Num] 

    from cteNumericRef num_ref 

    left join cteCheckRow check_row 
     on check_row.[REFERENCE] = num_ref.[REFERENCE] 

    where check_row.[REFERENCE] is null 
) 

, cteTextRow as 
(
    select [NAME],[BRAND],[REFERENCE], 
     case [REFERENCE] 
      when 'paired' then 'PAIRED' 
      when 'nonpaired' then 'UNIQUE' 
      when 'dropped' then 'DROPPED' 
      when '' then '' 
     else 'CHECK' end as [COMMENT] 
    from #source 
    where ISNUMERIC([REFERENCE]) <> 1 
) 

select 
    left_row.[NAME] 
    , left_row.[BRAND] 
    , left_row.[REFERENCE] 
    , right_row.[BRAND] as [COMMENTS] 
from ctePairedRow left_row 
inner join ctePairedRow right_row 
    on left_row.[REFERENCE] = right_row.[REFERENCE] 
    and left_row.[Pair_Num] <> right_row.[Pair_Num] 

union all 

select 
    num_ref.[NAME] 
    , num_ref.[BRAND] 
    , num_ref.[REFERENCE] 
    , check_row.[COMMENT] 
from cteNumericRef num_ref 
inner join cteCheckRow check_row 
    on check_row.[REFERENCE] = num_ref.[REFERENCE] 

union all 

select 
     [NAME] 
    , [BRAND] 
    , [REFERENCE] 
    , [COMMENT] 
from cteTextRow; 
+2

あなたの質問を改ざんしないでください –

+0

私はそれが機能しなかった、という試みた正当な理由 – Chels

答えて

1

はサンプルケース

です
;with cte as (
    select 'Kodyaz' as sozcuk 
    union all 
    select 'Eralper' 
    union all 
    select 'Vader' 
) 
select 'Phantom' as sozcuk 
union all 
select * from cte 
order by sozcuk 

とし、出力を

enter image description here

+0

のため申し訳ありません。 – Chels

+0

SQLサンプルを追加しました。あなたの事件でエラーを起こしましたか?それは何ですか? Or Order Byは、あなたが望むように動作しませんでしたか? – Eralper

+0

何が間違っているのかわからない – Chels

関連する問題