sql >> Databasteknik >  >> RDS >> Sqlserver

T SQL frågeformat för att bygga dynamisk tabell

Det du vill göra kallas pivot

Försök att använda den här koden

SELECT employeeid
      ,case when [2018-10-1] > 0 then '1' else '' end as [2018-10-1]
      ,case when [2018-10-2] > 0 then '1' else '' end as [2018-10-2]
      ,case when [2018-10-3] > 0 then '1' else '' end as [2018-10-3]
FROM(
SELECT employeeid
     , TranDate
     , 1 as num 
FROM History 
WHERE (CAST(trandate as DATE) = '2018-10-1' 
       or CAST(trandate as DATE) = '2018-10-2' 
       or CAST(trandate as DATE) = '2018-10-3' ) 
)
PIVOT(
COUNT(num)
FOR TranDate IN ([2018-10-1],[2018-10-2],[2018-10-3])
) as pvt

Du kan kontrollera sql-dokumentationen på PIVOT och UNPIVOT på PIVOT, UNPIVOT SQL , Om du också vill ha något mer dynamiskt för dina transdate-fält kan du kontrollera Dynamisk pivot



  1. Rails och MySQL - ActiveRecord::ConnectionNotEstablished in produktionsmiljö

  2. Listkolumnnamn för användarvyer i Oracle

  3. Hämta datum/tid från en Unix-tidsstämpel i SQLite

  4. MySQL TAN() Funktion – Returnerar tangenten för ett värde i MySQL