2017-11-27 3 views
1

Ich brauche ein pivot Daten aus dieser folgenden Daten zu erhalten:Benötigen über mehrere Dreh Hilfe

AssetNo EffectiveDate  Schedule   Interval 
AIRT01  2017-11-23  2017-11-23 
AIRT01  2017-11-23  2017-12-23 
AIRT01  2017-11-23  2018-01-23 
AIRT01  2017-11-23  2018-02-23   3M 
AIRT01  2017-11-23  2018-03-23 
AIRT01  2017-11-23  2018-04-23 
AIRT01  2017-11-23  2018-05-23   3M, 6M 
AIRT01  2017-11-23  2018-06-23 
AIRT01  2017-11-23  2018-07-23 
AIRT01  2017-11-23  2018-08-23   3M 
AIRT01  2017-11-23  2018-09-23 
AIRT01  2017-11-23  2018-10-23 
AIRT01  2017-11-23  2018-11-23   3M, 6M, 1Y 

Ausgabe wie folgt benötigen:

AssetNo EffectiveDate Nov-2017 Dec-2017 Jan-2018 Feb-2018 ... May-2018 ... Nov-2018 
    AIRT01 2017-11-23        3M   3M, 6M  3M, 6M, 1Y 

möglich ist, mehrere zu bekommen pivot (für einen Zeitplan und Intervall)?

Antwort

0

Versuchen Sie diese Antwort:

DECLARE @cols NVARCHAR(MAX), @query NVARCHAR(MAX); 
SET @cols = STUFF(
       (
        SELECT DISTINCT 
          ','+QUOTENAME(RIGHT(CONVERT(VARCHAR, c.Schedule,113),8)) 
          --','+QUOTENAME(c.Schedule) 
        FROM MyTab c FOR XML PATH(''), TYPE 
       ).value('.', 'nvarchar(max)'), 1, 1, ''); 
SET @query = 'SELECT [AssetNo],EffectiveDate, '[email protected]+'from (SELECT 
      [AssetNo], 
      EffectiveDate, 
      [Interval] AS [amount], 
      RIGHT(CONVERT(VARCHAR, Schedule,113),8) AS [category] 
    FROM MyTab 
    )x pivot (max(amount) for category in ('[email protected]+')) p'; 
EXECUTE (@query); 

Hope this Ihnen hilft.

OutPut:

AssetNo EffectiveDate Nov 2017 Dec 2017 Jan 2018 Feb 2018 ... May 2018 ... Nov 2018 
AIRT01 2017-11-23        3M   3M, 6M  3M, 6M, 1Y 
+0

Wow es wie ein Zauber funktioniert, vielen Dank!. – Jackques

+0

Sie sind willkommen ..! – DineshDB

+0

ist es möglich, die Reihenfolge in @cols festzulegen? weil die ausgabe wie alphabetisch von apr bis sept beginnt? – Jackques