2016-12-06 8 views
1

に日付を集約:は、私は、テーブルからデータを提示する必要があり報告の目的のために1列

table A (column1, column2, date1, date2, date3,...,dateN) 

マイクエリ#で区切られた1つの列内のすべての日付を提示する必要があります。

(YYYY-MM-DD# YYYY-MM-DD#..) 

しかし、問題は製品ごとに異なる日付の数がある可能性があるため、日付列の数が固定されていないことです。

+3

サンプルデータと期待される結果を示します。 [** How-to-Ask **](http://stackoverflow.com/help/how-to-ask) \t \t [** START **](http ://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)質問品質を向上させ、より良い回答を得る方法を学ぼう。 –

+0

あなたは 'date1、date2、..、dateN'を生成したソースを表示する必要があります。 –

+0

製品の日付が異なることを意味しますか? tableAは動的ビューですか? –

答えて

3

この文は、PostgreSQLの動作しますが、あなたは、私が思うSQLサーバのため+||を置き換えることができ、それが動作するはずただ試してみて、あなたがする必要があります残りを把握することができます。

||は、postgresの連結記号であるか、利用可能な連結機能を使用することもできます。

SELECT column1 || CASE WHEN column2 IS NOT NULL THEN '#' || column2 ELSE '' END || ... FROM tablehere

それが役に立てば幸い!

1

検討の結果、私は自分の答えを変更したいと思います。おそらく、少し軽く

Declare @YourTable table (Column1 int,Column2 int,date1 date,date2 date,date3 date) 
Insert Into @YourTable values 
(1,25,'2016-01-15','2016-03-22',null), 
(2,50,'2016-04-15','2016-07-29','2016-09-30') 

Select Column1 
     ,Column2 
     ,Dates=Replace(Replace((
      Select x=format(date1,'yyyy-MM-dd# ') 
        ,x=format(date2,'yyyy-MM-dd# ') 
        ,x=format(date3,'yyyy-MM-dd# ') 
        --x=format(dateNN,'yyyy-MM-dd# ') 
       For XML Path('') 
      ) ,'<x>',''),'</x>','') 
From @YourTable 

戻り

Column1 Column2 Dates 
1  25  2016-01-15# 2016-03-22# 
2  50  2016-04-15# 2016-07-29# 2016-09-30# 
+0

出力はまだ間違っていますが、最後に#がありますが、そこにはいけません。 –

+0

@RaulCuth要求事項を理解していない –

+0

はい、そうかもしれませんが、ユーザーは次のように述べています:私のクエリは#で区切られた1つの列にすべての日付を表示する必要があります。 –

関連する問題