Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

T SQL формат на заявка за изграждане на динамична таблица

Това, което искате да направите, се нарича завъртане

Опитайте да използвате този код

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

Можете да проверите sql документацията за PIVOT и UNPIVOT на PIVOT, UNPIVOT SQL , Освен това, ако искате нещо по-динамично за вашите полета за преобразуване, можете да проверите Динамична осова точка



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Обратни промени от регистъра на транзакциите в SQL Server 2008 R2?

  2. Защо да използвате ниво на изолация ЧЕТЕНЕ НЕКОНТРОЛИРАНО?

  3. Частична сума между различни записи с помощта на SQL 2008

  4. SQL server freetexttable частични думи

  5. Вземете броя на неуспешните опити за влизане поради грешна парола в SQL Server (T-SQL)