sql >> データベース >  >> RDS >> Sqlserver

GROUP BY と組み合わせた group_concat() を模倣する

    SELECT [Month] =DATENAME(MONTH, M), Sponsor, Client, c, [dates] =STUFF((SELECT ', ' + RTRIM(DATEPART(DAY, [date])) FROM dbo. booking AS b WHERE b.Sponsor =x.Sponsor AND b.Client =x.Client AND b.[date]>=x.M AND b.[date]   

    スポンサー/クライアントの組み合わせで同じ日に 2 つの予約がある場合、日付番号がリストに 2 回表示されることに注意してください。

    編集 私がテストした方法は次のとおりです。

    DECLARE @booking TABLE( booking_id INT IDENTITY(1,1) PRIMARY KEY, [date] DATE, Sponsor VARCHAR(32), Client VARCHAR(32));INSERT @booking([date], Sponsor,クライアント) VALUES('20120312','AB','y'), ('20120315','AB','y'), ('20120318','AB','y'),('20120316', 'FE','x'), ('20120319','FE','x'), ('20120321','FE','x'), ('20120320','FE','x') ,('20120404','AB','x'), ('20120408','AB','x');SELECT [月] =DATENAME(MONTH, M), スポンサー, クライアント, c, [日付] =STUFF((SELECT ', ' + RTRIM(DATEPART(DAY, [date])) FROM @booking AS b WHERE b.Sponsor =x.Sponsor AND b.Client =x.Client AND b.[date]>=x.M AND b.[date]   

    結果:

    Month Sponsor Client c 日付------- ------- ------- ------- ----------- ---3 月 AB y 3 12, 15, 18March FE x 4 16, 19, 20, 21April AB x 2 4, 8  


    1. MySQLでピボットテーブルの出力を返すにはどうすればよいですか?

    2. グループに基づくMySQLの自動インクリメント

    3. GoogleCloudSQLは読み取り専用になりました

    4. PHPでデータベースのデータを自動更新する方法