2016-10-26 4 views
1

私はこのクエリを実行すると、私上記のクエリそれが結果 結果 結果SQLでサブクエリを使用して1つの列の値を選択する方法は?

Title ParentTitle show 
p1 Home p1_Home 
p1.1 p1 p1.1_p1 
p1.1.1 p1.1 p1.1.1_p.11 
p2 Home p2_Home 
p2.1 p2 p2.1_p2 
p2.2 p2 p2.2_p2 
p2.3 p2.2 p2.3_p2.2 
P3 Home p3_Home 
p3.1 p3 p3.1_p3 
P3.1.1 p3.1 p3.1.1_p3.1 

エラーメッセージを期待

Title ParentTitle show 
    p1 Home p1_Home 
    p1.1 p1 p1_Home 
    p1.1.1 p1.1 p1_Home 
    p2 Home p1_Home 
    p2.1 p2 p1_Home 
    p2.2 p2 p1_Home 
    p2.3 p2.2 p1_Home 
    P3 Home p1_Home 
    p3.1 p3 p1_Home 
    P3.1.1 p3.1 p1_Home 

の下に表示されますときにエラー

select Title,ParentTitle,(select t.Title+'_'+t.ParentTitle from CTE t join CTE s on t.Title=s.Title where t.visible=0 or t.visible=1)as show from CTE 

を示します

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression. 

これを解決する方法

+0

[SQL Serverサブクエリ]の重複が1つ以上の値を返しました。サブクエリが、=、!=、<, <= , >、> =]に続くとき、これは許可されていません(http://stackoverflow.com/questions/2653188/sql-server-subquery-returned-more-than-1-value-this-is -not-allowed-when-s-s) –

+0

あなたはそのテーブルのデータを提供していただけますか? –

答えて

0

スカラー値を返すようにするには、サブクエリにWHERE句が必要です。

select Title,ParentTitle,(select visible from CTE WHERE Title = ????)as show from CTE 

あなたはどこにいる必要がありますか?????あなたが望む

select Title,ParentTitle,(select top 1 visible from CTE)as show from CTE 

または

select Title,ParentTitle,(select max(visible) from CTE)as show from CTE 

または任意のアグリゲーション機能:論理的な何かあなたのケースの代わりに WHERE Title = ????

+0

CTEから見たように、タイトル、親のタイトル(visible = 0のCTEからの表示を選択)を試しました。これも試しました。同じエラーです... @ Flicker – Meline

+0

条件を追加すると、必ずしも1行しかフェッチされません。 – sagi

+0

1行だけを返すようにtiを変更する必要があります。 visible = 0のCTEに1つ以上の行がある場合は、まだエラーが発生します。答えのどれもあなたの問題を解決できない場合。詳細を記入してください。 – FLICKER

0

のニーズに応じてに基づいて、あなたのような何かを行うことができます。これは、集計関数が実行しているもので、結果を集約して1つの値を戻します。

関連する問題