100分继续请教一个列变行的问题,急等,请各位大虾帮帮忙 。先谢谢各位

黑夜中最亮的星是菩提 2015-07-31 03:38:00
见图,

请教如何生成这个显示得表格。

分不够可以再加。
...全文
121 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
许晨旭 2015-07-31
  • 打赏
  • 举报
回复
可以用上次Landa_Alice 回答的动态SQL的方法,统计功能可以在程序中做,在SQL中做会非常麻烦; 或者可以试试SSRS中报表的矩阵,非常简单,直接把数据拖拖拽拽,都不用写存储过程
Tiger_Zhao 2015-07-31
  • 打赏
  • 举报
回复
行转列的PIVOT只适合处理一列数据,多列进行行转列的SQL会很长。
这种真适合用前台程序做。
就算用复杂的SQL做出来后,你明细和汇总还要把列对起来,还是要用程序对应。
SQL不擅长这个。
  • 打赏
  • 举报
回复
另外,表一是输入得数据,可以不管,我是想根据表一得数据来显示表二。
  • 打赏
  • 举报
回复
楼上得高手,日期是不定的,可能会一直延伸下去。例如 26号08:00-19:00,26号19:00-24:00,27号等等
Tiger_Zhao 2015-07-31
  • 打赏
  • 举报
回复
-- 明细
SELECT t1.舱口, t1.关单号,
t1.日期, t1.完成数, t1.累计数,
t2.日期, t2.完成数, t2.累计数,
t3.日期, t3.完成数, t3.累计数
FROM 输入表 t1
JOIN 输入表 t2
ON t1.舱口 = t2.舱口
JOIN 输入表 t3
ON t1.舱口 = t3.舱口
WHERE t1.日期 = '24日 18:00-24:00'
AND t2.日期 = '25日 08:00-18:00'
AND t3.日期 = '25日 18:00-24:00'

-- 汇总
SELECT *
FROM (
SELECT 分组,
'节假日' 分组,
完成数
FROM 输入表
WHERE 节假日 = '√'
GROUP BY 日期
UNION ALL
SELECT 日期,
'夜班' 分组,
完成数
FROM 输入表
WHERE 夜班 = '√'
GROUP BY 日期
) t
PIVOT (
SUM(完成数)
FOR 日期 IN ([24日 18:00-24:00],[25日 08:00-18:00],[25日 18:00-24:00])
) p

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧