2012-02-04 11 views
0

私の期待どおりの出力が得られません。私は前にgroup bydistinctを使用しようとしましたが、それは動作しません。私のデータベース内=(リピータの重複データが削除されました

データ

who are u? A 
who are u? B 
who are u? C 
who am i? A 
who am i? B 
who am i? C 

電流出力

列 'ExerciseTable.r1'は、集計関数またはGROUP BY句のいずれにも含まれていないため、選択リストで無効です。

期待出力SQL文で

who are u? A 
      B 
      C 

Who am i? A 
      B 
      C 

<asp:SqlDataSource ID="SqlDataSource2" runat="server" 
ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
SelectCommand="SELECT [Question],[r1] FROM [ExerciseTable] GROUP BY [Question]"> 

</asp:SqlDataSource> 
+0

選択したすべての列は、グループ内にあるか集約する必要があるため、グループ化されません - SELECT [質問]、[r1] FROM [ExerciseTable] GROUP BY [質問] [r1]はうまくいくだろうが、あなたにはあまり認めないだろう –

答えて

1

を(C1最初の列、C2第二カラム):固定RowNumber関数(Tなし

Select 
case when t.[RN]>1 and t.[RN]<>4 then '' else t.c1 end [c1], 
t.c2 from 
(
Select ROW_NUMBER() OVER (ORDER BY c1) AS [RN],c1,c2 from t1 
) as t 

[ RN]):

Select 
case 
when 
t.[RN]=( 
    Select min([RN]) from 
    (
    Select ROW_NUMBER() OVER (ORDER BY c1) AS [RN],c1,c2 from t1 
    ) as t where c1='who am i?' 
) 
or 
t.[RN]=(
    Select min([RN]) from 
    (
    Select ROW_NUMBER() OVER (ORDER BY c1) AS [RN],c1,c2 from t1 
    ) as t where c1='who are u?' 
) then t.c1 else '' end [c1], 
t.c2 from 
     (
     Select ROW_NUMBER() OVER (ORDER BY c1) AS [RN],c1,c2 from t1 
     ) as t 

または、C#/ VB.Netを使用して結果セット(例:リスト)を反復処理し、最初のものが「who am i?」の後に次の行の列のデータを削除し、あなたは誰ですか? '

+0

erm、今試してみる –

関連する問題