2017-12-01 2 views
-1

年の各月を列挙するデータを引っ張っていますが、月の列には毎年の最初の日が示されます。満月の名前? ここに私が持っているもののいくつかがあります。私は似たような質問を読んで、どこに書かれているかを追加しようとしましたが、うまく動作しませんでした。事前に年に各月を引くときに、数字ではなく日付の名前を表示する月を取得する

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の場合

+2

「MySQL」または「SQL Server」? – Squirrel

+2

これはmysqlとsqlserverの両方にすることはできません。また、私たちが答えることができない回答もそれぞれ異なるためです。 – Hogan

+0

Date_Format()を使用します。 詳細についてはhttps://www.w3schools.com/sql/func_mysql_date_format.asp –

答えて

1

を支援します。 https://www.w3resource.com/mysql/date-and-time-functions/mysql-monthname-function.php そのWebページ上の例のようMONTHNAME関数を使用します。

MS SQL Serverの場合
SELECT MONTHNAME(a.MonthDate) 
+0

ありがとう、私は似たようなことを読むが、あなたの答えまでそれを置く場所を正確に把握していない – youngblood

+0

問題なし、最も正しいものとして私の答えを受け入れること自由に感じる:-) –

+0

@ジョンミッチェル - または少なくとも彼が使用していたプラットフォームで50%の抽選を獲得した人。 – Hogan

1

あなたは月の名前を使用したい場合は、この派生テーブルで:

SELECT datename(month,DATEADD(month, DATEDIFF(month, 0, b.CreationProdDate), 0)) As MonthDate 

で、あなたが最初の列にdatename(month, date)機能を適用したいです両方のユニオンクエリーの

+0

'datename(month、b.CreationProdDate)'は同じではないと思いますか? – Hogan

+0

@Hogan私はそうは思わない、datename dunctionは、https://technet.microsoft.com/en-us/library/ms174395%28v=sql.105%29.aspxによるdatepartとdateの両方を引数として期待していますか? f = 255&MSPPError = -2147217396 – jpw

+0

私は2つの引数を持っていますが、私はそれを編集しました。最初のバージョンを見ていますか? – Hogan

関連する問題