0

レガシーから継承されたややトリッキーなテーブル構造があります。

重要な約4列のテーブルがあります。

 DayNight    Cust_Code    Name     Phone     Counter
   D          ABC0111    Marty    aaaaa        1 
   D          ABC0111    John     bbbbb        2 
   D          ABC0111    Beth     ccccc        3 
   N          ABC0111    Sue      ddddd        1 
   N          ABC0111    Mary     eeeee        2 

これらの 5 つのレコードを次の構造で 1 つの行に結合する必要があります。

CustCode,     Day1,      Day2,      Day3,      Night1,      Night2,      Night3
ABC0111,   Marty aaaaa, John bbbbb, Beth ccccc, Sue ddddd , Mary eeeee,    null or ''

私が試したこと

SELECT DISTINCT
  x.NAME,
  x.DAYNIGHT,
  x.PHONE,
  x.COUNTER,
   cp.NAME,
   cp.DAYNIGHT,
   cp.COUNTER,
   cp.PHONE,
   cp.POSITION
        FROM (
               SELECT *
               from table1 where
               table1.DAYNIGHT LIKE 'N'
             ) x
     join  table1 t1 on t1.CUST_CODE = x.CUST_CODE 
     where cp.DAYNIGHT LIKE 'D'
4

2 に答える 2

1

あなたも使うことができますPivot

SELECT *
FROM  (SELECT cust_code,
              NAME + ' ' + phone                                                                  AS pp,
              CASE WHEN daynight ='D' THEN 'Day' ELSE 'Night' END + CONVERT(VARCHAR(30), counter) AS rr
       FROM   tablename)a
      PIVOT (Max(pp)
            FOR rr IN([Day1],
                      [Day2],
                      [Day3],
                      [Night1],
                      [Night2],
                      [Night3])) pv 
于 2015-01-07T16:57:46.327 に答える
1

条件付き集計を使用してこれを行う傾向があります。

select CustCode,
       max(case when DayNight = 'D' and Counter = 1 then Name + ' ' + Phone end) as Day1,
       max(case when DayNight = 'D' and Counter = 2 then Name + ' ' + Phone end) as Day2,
       max(case when DayNight = 'D' and Counter = 3 then Name + ' ' + Phone end) as Day3,
       max(case when DayNight = 'N' and Counter = 1 then Name + ' ' + Phone end) as Night1,
       max(case when DayNight = 'N' and Counter = 2 then Name + ' ' + Phone end) as Night2,
       max(case when DayNight = 'N' and Counter = 3 then Name + ' ' + Phone end) as Night3
from table1
group by CustCode;
于 2015-01-07T16:45:02.853 に答える