ASKER
;WITH cal_upvt(CalCentury, CalYear, CalMonth, CalDay, WorkDay) AS (
-- unpivot your original data
SELECT CalCentury, CalYear, CalMonth
, CONVERT(INT, REPLACE(CalDay, 'CalDay', '')), WorkDay
FROM dbo.AdmCalendar
UNPIVOT(WorkDay FOR CalDay IN (CalDay1, CalDay2, CalDay3,
CalDay4,
CalDay5,
CalDay6,
CalDay7,
CalDay8,
CalDay9,
CalDay10,
CalDay11,
CalDay12,
CalDay13,
CalDay14,
CalDay15,
CalDay16,
CalDay17,
CalDay18,
CalDay19,
CalDay20,
CalDay21,
CalDay22,
CalDay23,
CalDay24,
CalDay25,
CalDay26,
CalDay27,
CalDay28,
CalDay29,
CalDay30,
CalDay31)) upvt
)
-- put together final date and display
SELECT (CalCentury*1000000+CalYear*10000+CalMonth*100+CalDay) AS [Date], WorkDay
FROM cal_upvt;
Microsoft SQL Server 2005 is a suite of relational database management system (RDBMS) products providing multi-user database access functionality.Component services include integration (SSIS), reporting (SSRS), analysis (SSAS), data quality, master data, T-SQL and performance tuning. It includes support for managing XML data and allows a database server to be exposed over web services using Tabular Data Stream (TDS) packets encapsulated within SOAP (protocol) requests.
TRUSTED BY
Firstly, you can use UNPIVOT (SQL 2005+) to get the days vertically.
Something like:
Open in new window