-2

このようなテーブルがあります

id    data
1     note1
1     note2
3     note6
3     note8

このテーブルからデータを選択すると、次のように連結されたデータ列の値を取得したい

select data 
from table 
where id = 1 --(this query is just for demonstration )

のような出力を与える必要があります

note1+note2

これを達成する方法はありますか?

注: COALESCE (Vishal から入手したもの) を使用してみましたが、これも機能しませんでした。実際のクエリは次のようになります。

    declare @var1 varchar(200)

SELECT     dbo.kt_missingdataview.Varenummer, dbo.kt_missingdataview.Varenavn, dbo.kt_missingdataview.Producentvarenummer,
                          (SELECT     dbo.ETEXT.TXT1
                            WHERE      (dbo.ETEXT.ID = 1)) AS shortdesc,
                            (SELECT @var1 = COALESCE(@var1 + '+', '') +  dbo.ETEXT.TXT1 from dbo.ETEXT 
Select @var1),
                          (SELECT     dbo.ETEXT.TXT1
                            WHERE      (dbo.ETEXT.ID = 2)) AS longdesc, dbo.ETEXT.REFKEY, dbo.ETEXT.ID
FROM         dbo.kt_missingdataview INNER JOIN
                      dbo.ETEXT ON dbo.kt_missingdataview.Varenummer = dbo.ETEXT.REFKEY
WHERE     (dbo.ETEXT.ELANGUAGE = 0) 
4

4 に答える 4

2

SQL Server の場合、COALESCEを使用できます

declare @var1 varchar(200)
SELECT @var1 = COALESCE(@var1 + '+', '') +  data from the_table where id = 1
Select @var1

出力:note1+note2

于 2013-03-15T11:13:21.703 に答える
1

DBMS を指定しなかったため、Postgres を想定しています。

select id, string_agg(data, '+')
from the_table
group by id;
于 2013-03-15T11:09:50.783 に答える
1

SQL Server では、次を使用FOR XML PATHして結果を取得できます。

select distinct t1.id,
  STUFF((SELECT distinct '+ ' + t2.data
         from yourtable t2
         where t1.id = t2.id
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,2,'') data
from yourtable t1;
于 2013-03-15T11:21:54.700 に答える
1

MySQL では、GROUP_CONCAT 関数を使用します。

SELECT id, group_concat(data)
FROM TABLENAME 
WHERE ID=1
于 2013-03-15T11:14:07.957 に答える