【问题标题】:Query i need like this查询我需要这样
【发布时间】:2011-07-13 23:51:59
【问题描述】:

这是我的查询

SELECT CAL.CALENDAR_NAME,CAL.CALENDAR_ID,CALDAY.CALENDARDAY_DAYID 
FROM lms_calendar AS CAL
  LEFT JOIN LMS_CALENDARDAY AS CALDAY 
  ON CAL.CALENDAR_ID = CALDAY.CALENDARDAY_CALENDARID

我得到这样的结果

CALENDAR_NAME                                      CALENDAR_ID CALENDARDAY_DAYID
-------------------------------------------------- ----------- -----------------
Test                                               1           1
Test                                               1           2
Test                                               1           3
Test                                               1           4
Test                                               1           6

但我需要这样的

calendar_name  calendar_dayid calendar_dayid calendar_dayid calendar_dayid calendar_dayid  
test              1                 2              3              4            

【问题讨论】:

  • 看看使用PIVOT 命令
  • 为什么需要包含 5 个同名列的结果?

标签: sql sql-server-2005 tsql pivot


【解决方案1】:

这是一个使用PIVOT 运算符的查询

SELECT calendar_name, 
    [1] AS calendar_dayid, 
    [2] AS calendar_dayid, 
    [3] AS calendar_dayid, 
    [4] AS calendar_dayid, 
    [5] AS calendar_dayid
FROM (
    SELECT CAL.CALENDAR_NAME,CAL.CALENDAR_ID,CALDAY.CALENDARDAY_DAYID 
    FROM lms_calendar AS CAL
      LEFT JOIN LMS_CALENDARDAY AS CALDAY 
      ON CAL.CALENDAR_ID = CALDAY.CALENDARDAY_CALENDARID
    ) AS src
PIVOT (
    MAX(calendarday_dayid)
    FOR calendarday_dayid IN ([1], [2], [3], [4], [5])
    ) AS pvt

【讨论】:

    猜你喜欢
    • 2021-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 2015-04-07
    • 2011-04-25
    相关资源
    最近更新 更多