 |
|
Dynamic Pivot Table ใน SQL Server 2008 หน่อยครับ JOIN Subquery Pivot แล้ว Error |
|
 |
|
|
 |
 |
|
คือผมต้องการให้ข้อมูลออกมาเหมือนในรูปแบบ ตามภาพ ครับแต่ติดปัญหาตรงที่ join sub query แต่ error ครับ

Code ในส่วนการ join pivot ครับ
Code (SQL)
DECLARE @cols AS NVARCHAR(MAX),
@PlanBeam AS NVARCHAR(MAX),
@PlanColumn AS NVARCHAR(MAX),
@BeamColumn AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX);
SET @cols = STUFF((SELECT ',' + QUOTENAME(c.Process_Name)
FROM tb_process c
order by Process_ID
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)'),1,1,'')
set @BeamColumn = 'SELECT DateBeamColumn INTO #Temp FROM
( SELECT PlanDate PDate, Dwg_ID DW, ' + @cols + ' dd FROM
( SELECT PlanDate,Dwg_ID,Process_Name
FROM tb_report_dwg_center rt
join tb_type on tb_type.Type_ID = rt.Type_ID
where rt.Type_ID = 1
group by Dwg_ID,Type_Name,PlanDate)x
pivot
(
Max(PDate)
for Process_Name in (' + @cols + ')
) p
) f1
join
( SELECT PlanDate DDate, Dwg_ID DG, ' + @cols + ' cc FROM
( SELECT PlanDate,Dwg_ID,Process_Name
FROM tb_report_dwg_center tr
join tb_type on tb_type.Type_ID = tr.Type_ID
where tr.Type_ID = 2
group by Dwg_ID,Type_Name,PlanDate)z
pivot
(
Max(DDate)
for Process_Name in (' + @cols + ')
) q
) f2 on f1.dd = f2.cc '
execute(@BeamColumn)
Tag : Ms SQL Server 2008
|
|
 |
 |
 |
 |
Date :
2017-03-02 14:29:54 |
By :
northconer |
View :
1461 |
Reply :
20 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มี Error ว่าอะไรครับ 
|
 |
 |
 |
 |
Date :
2017-03-03 17:01:46 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอนนี้ไม่ error แล้วครับแต่ว่า data 0 row แทน T-T ข้อมูลไม่ขึ้น
Code (SQL)
set @BeamColumn = 'SELECT pp.DateBeamColumn INTO #Temp FROM #Temptemp pp join
( SELECT DATE PDate , ' + @cols + ' FROM
(SELECT CONVERT(CHAR(10), q.PlanDate, 120) AS DATE, Process_Name, Dwg_ID AS Beam_PLAN
FROM
( SELECT Dwg_ID,
Process_Name,
PlanDate
FROM tb_report_dwg_center rt
join tb_type on tb_type.Type_ID = rt.Type_ID
join tb_process pc on pc.Process_ID = rt.Process_ID
where rt.Type_ID = 1 ) q
group by Dwg_ID,PlanDate,Process_Name ) sel1
pivot
(
Max(Beam_PLAN)
for Process_Name in (' + @cols + ')
) p
) f1 on pp.DateBeamColumn = f1.PDate
join
( SELECT DATE DDate, ' + @cols + ' FROM
(SELECT CONVERT(CHAR(10), z.PlanDate, 120) AS DATE, Process_Name, Dwg_ID AS Column_PLAN
FROM
( SELECT Dwg_ID,
Process_Name,
PlanDate
FROM tb_report_dwg_center tr
join tb_type on tb_type.Type_ID = tr.Type_ID
join tb_process pd on pd.Process_ID = tr.Process_ID
where tr.Type_ID = 2 )z
group by Dwg_ID,PlanDate,Process_Name )sel2
pivot
(
Max(Column_PLAN)
for Process_Name in (' + @cols + ')
) q
) f2 on pp.DateBeamColumn = f2.DDate '
|
 |
 |
 |
 |
Date :
2017-03-03 17:17:28 |
By :
northconer |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ต้องนั่งไล่ Execute ในแต่ล่ะส่วนครับ ว่าค่าที่ไป JOIN กัน มันมีค่าหรือไม่
|
 |
 |
 |
 |
Date :
2017-03-03 17:31:54 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Quote:ต้องนั่งไล่ Execute ในแต่ล่ะส่วนครับ ว่าค่าที่ไป JOIN กัน มันมีค่าหรือไม่
--- Join = Inner Join
--- Left Join = Left Outer Join
--- Right Jon = Right Outer Join
ตามนั้นครับ
แหมเขียน SQL Query ซะหยาดเยิ้มเชียว
--- นิสัยของวัฒนธรรมองค์กร จะคุยก็รีบคุย (ช่วงเช้า 11.00 -12.00) น.
--- นิสัยของวัฒนธรรมองค์กร จะคุยก็รีบคุย (ช่วงบ่าย 14.00 -15.00) น.
เวลานอกเหนือจากนี้คุณก็จะไม่ได้รับความร่วมมือ (เท่าที่ควร) +55555
--------- มาทำงาน 10.59 ออกไปกินข้าว 11.00 น.
--------- ออกจากงานเวลา 14.00 น. (ต้องเตรียมตัวกลับบ้าน) เวลา 15.01 ต้องออกจากที่ทำงาน)
Code (SQL)
set @BeamColumn = 'SELECT pp.DateBeamColumn INTO #Temp FROM #Temptemp pp join
( SELECT DATE PDate , ' + @cols + ' FROM
(SELECT CONVERT(CHAR(10), q.PlanDate, 120) AS DATE, Process_Name, Dwg_ID AS Beam_PLAN
FROM
( SELECT Dwg_ID,
Process_Name,
PlanDate
FROM tb_report_dwg_center rt
join tb_type on tb_type.Type_ID = rt.Type_ID
join tb_process pc on pc.Process_ID = rt.Process_ID
where rt.Type_ID = 1 ) q
group by Dwg_ID,PlanDate,Process_Name ) sel1
pivot
(
Max(Beam_PLAN)
for Process_Name in (' + @cols + ')
) p
) f1 on pp.DateBeamColumn = f1.PDate
join
( SELECT DATE DDate, ' + @cols + ' FROM
(SELECT CONVERT(CHAR(10), z.PlanDate, 120) AS DATE, Process_Name, Dwg_ID AS Column_PLAN
FROM
( SELECT Dwg_ID,
Process_Name,
PlanDate
FROM tb_report_dwg_center tr
join tb_type on tb_type.Type_ID = tr.Type_ID
join tb_process pd on pd.Process_ID = tr.Process_ID
where tr.Type_ID = 2 )z
group by Dwg_ID,PlanDate,Process_Name )sel2
pivot
(
Max(Column_PLAN)
for Process_Name in (' + @cols + ')
) q
) f2 on pp.DateBeamColumn = f2.DDate '
|
 |
 |
 |
 |
Date :
2017-03-04 02:08:31 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เดี่ยวคุณจะหาว่าผมมั่ว ผมเห็นแค่นี้ผมก็รับรู้ (ผมมีสัญชาติญานของหมาโดยกำเนิด)
--- Code (SQL)
#Temp FROM #Temptemp
ผมผ่านมาร้อยเอ็ดเจ็ดย่านน้ำ Source Code ทุกฯบรรทัด (ที่เขึยนโดยคนไทย)
------ ผมเดาไม่เคยผิด (+55555)
ปล. รู้แต่บางครั้งผมไม่อยากจะพูด
|
 |
 |
 |
 |
Date :
2017-03-04 02:31:42 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เล่าเรื่องจริงให้ฟังนะ
--- ผมรู้สึกว่าวันพรุ่งนี้ผมอยากจะมีความรัก(ควยรัก) อีกสักครั้งหนึ่ง
แน่นอนว่า ผมเป็นชาย และสิ่งที่ผมต้องการคือผู็หญิง
ผมกุญแยรถ (ทำให้ 4 ล้อวิ่งได้) ผมมีมากจนเกินไป ระดับที่ว่า ลานจอดรถรายเดือนผมจ่ายค่าจอดรถเป็นแสนแสนฯ
---- สิบล้อ ยี่สิบล้อ 2ล้อ ยกล้อ ก็ว่ากันไป (มูลค่ารวมฯกันก็ไม่มากเท่าไหร่ ก็แค่หลักพันล้าน)
|
 |
 |
 |
 |
Date :
2017-03-04 02:40:00 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จาก #NO6 สาวฯ ถามผมว่าทำไมพี่ฉี่บ่อยจัง
(วงสนทนาหัวเราะคิกคักคิกคัก ผมก็ไม่รู้ว่าเขาคิดอะไรกันอยู่)
จู่จู่ผมโพล่งขึ้นมา
---ที่ผ่่านมาบ่อยฯ และอีก 2 ครั้งที่แล้ว ผมควักจู๋ไม่เจอผมเลยไม่ได้ฉี่
นี่คือที่มาที่ไป (สาวไม่เคยกำแล้วจะคาดคะเนขนาดมันได้อย่างไรเล่า) +55555
|
 |
 |
 |
 |
Date :
2017-03-04 02:51:08 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เผื่อจะมีประโยชน์บ้าง สำหรับผู้ผ่านไปผ่านมา
Code (SQL)
DECLARE @Big TABLE (
FullName VARCHAR(255),
Date_Conv DATETIME,
Time_Conv VARCHAR(5)
)
DECLARE @ColsPivot AS NVARCHAR(MAX)
DECLARE @Query AS NVARCHAR(MAX)
INSERT INTO @Big VALUES ('Jim','2013-09-01','08:02'),
('Jim','2013-09-01','16:00'),
('Jim','2013-09-01','16:30'),
('Jim','2013-09-02','08:04'),
('Jim','2013-09-02','16:25'),
('Jim','2013-09-03','08:29'),
('Jim','2013-09-03','16:02')
IF OBJECT_ID(N'tempdb..#TempTable') IS NOT NULL
DROP TABLE #TempTable;
SELECT @colsPivot = STUFF((
SELECT DISTINCT ',' + QUOTENAME(CONVERT(VARCHAR(8), Date_Conv, 112))
FROM @Big WHERE Date_Conv BETWEEN '2013-09-01' AND '2013-09-02'
FOR XML PATH(''),
TYPE
).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
SET @Query = 'SELECT * FROM #TempTable
PIVOT(MIN(Time_ConvX) FOR Date_Conv IN (' + @colsPivot + '))
AS Pvt1';
;WITH DeepAss
AS (
SELECT ROW_NUMBER() OVER (
PARTITION BY FullName,
Date_Conv ORDER BY Time_Conv ASC
) AS Sideline,
*, (SELECT CASE WHEN Time_Conv <= '12:00' THEN Time_Conv + '(I)' ELSE 'Ass (O)' END) As Time_ConvX
FROM @Big
)
SELECT * INTO #TempTable FROM DeepAss
EXECUTE (@query)
IF OBJECT_ID(N'tempdb..#TempTable') IS NOT NULL
BEGIN
DROP TABLE #TempTable
END;
|
 |
 |
 |
 |
Date :
2017-03-04 11:13:40 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

|
 |
 |
 |
 |
Date :
2017-03-04 11:56:21 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จาก #NO 11 "พิเรนในสิ่งที่ผมคิด"
------ คนเคยหนาว "ร้อนไหมล่ะ" คนเคยร้อน "หนาวไหมล่ะ"
------ ผมเปิดให้ดู Source Code ทุกบรรทัด (ระบบเงินเดือนและค่าจ้าง)

ผมจะเอาเทคโนโลยี Web Application มาใส่ใน Windows Application และทำได้แบบลงตัว
+55555
|
 |
 |
 |
 |
Date :
2017-03-05 02:04:56 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จาก #NO 13 Rev Code (ให้ดูเป็นมืออาชีพ)
Code (VB.NET)
Public Function DateCompareBaseOnBirthDate(ByVal fromDate As DateTime, ByVal toDate As DateTime) As Object
Dim months As Integer = 0
Dim days As Integer = 0
Dim GoMonth As DateTime 'Tricks
months = (toDate.Year - fromDate.Year) * 12 + (toDate.Month - fromDate.Month) - If(toDate.Day < fromDate.Day, 1, 0)
GoMonth = fromDate.AddMonths(months)
days = System.Math.Abs(toDate.Day - GoMonth.Day) + 1
If days = DateTime.DaysInMonth(GoMonth.Year, GoMonth.Month) Then
months += 1
days = 0
End If
Return New With {.Years = months \ 12, .Months = months Mod 12, .Days = days}
End Function
ปล. แสบสันต์ไหมล่ะ? +55555
|
 |
 |
 |
 |
Date :
2017-03-05 14:19:14 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

อะไรที่ยากฯ (PR All Algorithm) ตรูก็ทำให้หมดแล้ว อทิเช่น
--- การประมวลผล ณ. สิ้นวัน
--- การประมวลผล ณ. สิ้นสัปดาห์
--- การประมวลผล ณ. สิ้นเดือน
และ
--- การประมวลผล ณ. สิ้นปี
--- ผมใช้ SourceCode แบบแตดไม่กระดิก (เล็กน้อย)
ลากยาวไปถึง ระบบ GL (ระบบงานบัญชี)
--- ตรูก็ทำให้หมดแล้ว
ลากยาวไปถึงระบบงานขาย
--- OK ถ้าขายแล้วเอ็งเก็บเงินได้ (ตามยอดขาย) +55555
------ ตรูดึงมาทำเงินเดือนให้ได้
------ เงินหักตรูไม่ได้เอามาคิดหรอก (+55555)
ปล. สนิมสร้อยข้างใน (ตรูยังไม่ได้ทำ +55555)
|
 |
 |
 |
 |
Date :
2017-03-05 15:17:28 |
By :
หน้าอี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ท่าทาง กระทู้นี้จะอยู่อีกนาน งั้นผมขออนุญาติ ซื้อ น้ำแข็ง โซดา ไว้ซักแพคละกัน จะได้ติดตามกันแบบใกล้นิด 5555
|
 |
 |
 |
 |
Date :
2017-03-05 15:19:46 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พวกคคุณรู้จักคำว่า "สนิมสร้อย" โดยถ่องแท้หรือไม่? +55555
...
...
...
ปล. ผมคิดไม่เหมือนชาวบ้านเขา
--- ทุกฯบริบทสิ่งทีผมคิด มันมีทั้งคุณและโทษเสมอ
ผมกำลังพูดถึงระบบงานเงินเดือน (ลาดชะกาล/เอกชน)
--- รายงานต่างฯ มันอยู่ในหัวสมองของผม (ครอบคลุมในทุกฯกรณ๊)
------ ผมถึงบอกได้ว่า "โปรแกรมเมอร์กระจอกฯ" ไม่ต้องมาคิดแทนผม
ตัวอย่างรายงานเชิงวิเคาะห์
--- สมมุติว่า มีพนักงาน (สำคํวย) ลาป่วย
----- หมายเหตุ แพทย์ให้ความเห็นเอาไว้ว่า
-------- เลียฮีมากเกินไปจนป่วยไข็
ผมก็กลับมาทบทวน ตรูเลียทุกวัน (วันละ > หลายเวลา) ตรูไม่เห็นจะเป็นะอะไรเลย
--------สมนาม หน้าฮี +5555
...
ระบบของผมก็ต้องสามารถชี้ประวัติของ แพทย์ท่านนั้นฯได้
ระบบรายงานเชิงวิเคาะหร์
|
 |
 |
 |
 |
Date :
2017-03-05 15:57:42 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|