【发布时间】:2018-05-15 00:59:40
【问题描述】:
我正在提取列出一年中每个月的数据,但月份列显示每年的第一天,我怎样才能让这个显示完整的月份名称? 这是我所拥有的一些东西。我阅读了类似的问题,并试图在各处添加它所说的内容,但我无法让它工作,帮助?
SELECT a.MonthDate
,Sum(a.ScrapPcs) / (Sum(a.GrossPcs)*1.00) As ScrapPct
,0.05 As ScrapTarget
,sum (a.GrossPcs) As 'Total Parts Cast'
,sum (a.ScrapPcs) as 'Total Parts Scrap'
,CASE
WHEN Sum(a.ScrapPcs) / (Sum(a.GrossPcs)*1.00) <= 0.05 THEN 1
WHEN Sum(a.ScrapPcs) / (Sum(a.GrossPcs)*1.00) >= 0.9*.05 THEN -1
ELSE 0
END
AS Status
FROM
(
SELECT DATEADD(month, DATEDIFF(month, 0, b.CreationProdDate), 0) As MonthDate
,Count(b.BOOKING_ID) As ScrapPcs
, 0 As GrossPcs
FROM dbo.CPC_BOOKING b
WHERE b.CreationProdDate Between DATEADD(yy, DATEDIFF(yy, 0, GetDate()), 0) AND DateAdd("d", -1, GetDate())
and CPC_BookingTyp_ID in (2,8)
and ManufacturingPlant in (90002604,90017699, 90017705)
GROUP BY DATEADD(month, DATEDIFF(month, 0, b.CreationProdDate), 0)
UNION ALL
SELECT DATEADD(month, DATEDIFF(month, 0, n.ProductionDate), 0) As MonthDate
,0 As ScrapPcs
,Sum(n.Quantity) As GrossPcs
FROM [NORIS].[dbo].[MDL_Data_Ultimate] n
WHERE n.ProductionDate Between DATEADD(yy, DATEDIFF(yy, 0, GetDate()), 0) AND DateAdd("d", -1, GetDate())
and n.ManufacturingPlantGroup = 1
GROUP BY DATEADD(month, DATEDIFF(month, 0, n.ProductionDate), 0)
) a
group by a.MonthDate
提前感谢,有什么帮助
【问题讨论】:
-
MySQL或SQL Server? -
这不能同时是 mysql 和 sqlserver,因为每个人的答案都不一样,我们无法回答。
-
使用 Date_Format()。阅读本文以获取更多信息w3schools.com/sql/func_mysql_date_format.asp
-
这应该是 MySQL 或 SQL 服务器之一,因此这两个有不同的方法
-
@bksi -- 实际上编写一个适用于两者的解决方案并不难......也许这就是他所需要的。 ;)
标签: mysql sql sql-server date