EXCEL TOOLS
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
Excel Add-ins ที่พัฒนาโดยคุณสันติพงศ์ ณสุย (MVP Excel 2010-2020) ด้วยภาษา C# เพื่อแก้ไขปัญหาไฟล์ใหญ่ คำนวณนาน ทำงานช้า จัดการข้อมูลต่าง ๆ ที่ทำงานประจำวันได้อย่างสะดวกรวดเร็ว สนใจคลิกไปดูได้ที่นี่ครับ => Excel Tools
[code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่างเพิ่มเติม)Code: Select all
SELECT A.*
FROM (Select * From [select count] Where [select count].[category] Like '*Z519*' and [select count].[category] <> 'Z519') As A
LEFT JOIN (Select * From [select count] Where [select count].[category] Like '*Z519*' and [select count].[category] <> 'Z519') As B
ON A.[NO] = B.[NO] AND A.[category] < B.[category]
WHERE B.[category] IS NULL
Order By A.[NO] ASC
Code: Select all
SELECT A.*
FROM (Select * From [select count] Where [select count].[category] Like '*Z519*' and [select count].[category] <> 'Z519') As A
LEFT JOIN (Select * From [select count] Where [select count].[category] Like '*Z519*' and [select count].[category] <> 'Z519') As B
ON A.[NO] = B.[NO] AND A.[category] < B.[category]
Order By A.[NO] ASC
ได้ตามที่ต้องการครับ ขอบคุณครับอาจารย์snasui wrote: Thu Dec 26, 2019 9:16 pm ตัวอย่าง Query ครับ
กรณีที่ 1กรณีที่ 2Code: Select all
SELECT A.* FROM (Select * From [select count] Where [select count].[category] Like '*Z519*' and [select count].[category] <> 'Z519') As A LEFT JOIN (Select * From [select count] Where [select count].[category] Like '*Z519*' and [select count].[category] <> 'Z519') As B ON A.[NO] = B.[NO] AND A.[category] < B.[category] WHERE B.[category] IS NULL Order By A.[NO] ASC
Code: Select all
SELECT A.* FROM (Select * From [select count] Where [select count].[category] Like '*Z519*' and [select count].[category] <> 'Z519') As A LEFT JOIN (Select * From [select count] Where [select count].[category] Like '*Z519*' and [select count].[category] <> 'Z519') As B ON A.[NO] = B.[NO] AND A.[category] < B.[category] Order By A.[NO] ASC
กรณีที่ 3 ทำได้แล้วครับsnasui wrote: Thu Jan 02, 2020 8:26 pm ลองเขียนมาดูเองก่อนตามแนวทางที่ผมให้ไป ติดปัญหาตรงไหนค่อยถามกันต่อครับ
Code: Select all
SELECT [NO], [category]
FROM (SELECT DISTINCT [NO], [category] FROM [select count] WHERE [select count].[category] NOT Like '*Z519*' and [select count].[category] <> 'Z519')
AS [%$##@_Alias] ORDER BY [NO] ASC
Code: Select all
SELECT [NO], [category]
FROM (SELECT DISTINCT [NO] FROM [select count] WHERE [select count].[category] NOT Like '*Z519*' and [select count].[category] <> 'Z519')
AS [%$##@_Alias] ORDER BY [NO] ASC
Code: Select all
SELECT Count(select count.[NO]) As Total
FROM (SELECT DISTINCT [NO], [category] FROM [select count] WHERE [select count].[category] NOT Like '*Z519*' and [select count].[category] <> 'Z519')
AS [%$##@_Alias] ORDER BY [NO] ASC
Code: Select all
SELECT Count([select count].[NO]) As Total
FROM (SELECT * FROM [select count] WHERE [select count].[category] Like '*Z519*' and [select count].[category] <> 'Z519') AS A LEFT JOIN (SELECT * FROM [select count] WHERE [select count].[category] Like '*Z519*' and [select count].[category] <> 'Z519') AS B ON (A.[NO] = B.[NO]) AND (A.[category] < B.[category])
WHERE B.category Is Null
ORDER BY A.[NO];
ตัวอย่าง Code ครับTotem wrote: Thu Jan 02, 2020 11:28 am กรณีที 4 1select count category Query
select ข้อมูลใน Tables select count
โดยกำหนดว่า select ข้อมูลใน category
ให้ select ไม่รวม Z519
และในฟิลด์ NO มีเลขซ้ำให้ select รายการเดียวและที่มี NO เลขไม่ซ้ำก็นำมาแสดง (ได้ NO.ที่ไม่ซ้ำกัน) เช่น
NO. category
2 I10
3 I100
4 I101
5 I104
1 I102
6 I105
8 I13
9 I110
10 I134
Code: Select all
SELECT A.*
FROM (Select * From [select count] Where [select count].[category] Not Like '*Z519*' ) As A
LEFT JOIN (Select * From [select count] Where [select count].[category] Not Like '*Z519*') As B
ON A.[NO] = B.[NO] AND A.[category] < B.[category]
WHERE B.[category] IS NULL
Order By A.[NO] ASC
Code: Select all
SELECT Count(A.[category]) As Count
FROM (Select * From [select count] Where [select count].[category] Not Like '*Z519*' ) As A
LEFT JOIN (Select * From [select count] Where [select count].[category] Not Like '*Z519*') As B
ON A.[NO] = B.[NO] AND A.[category] < B.[category]
WHERE B.[category] IS NULL
snasui wrote: Fri Jan 03, 2020 8:29 pm ผมดูแล้วที่ลองเขียนมาไม่ได้ใช้แนวทางที่ผมเขียนเป็นต้วอย่างให้ไปแต่อย่างใดครับตัวอย่าง Code ครับTotem wrote: Thu Jan 02, 2020 11:28 am กรณีที 4 1select count category Query
select ข้อมูลใน Tables select count
โดยกำหนดว่า select ข้อมูลใน category
ให้ select ไม่รวม Z519
และในฟิลด์ NO มีเลขซ้ำให้ select รายการเดียวและที่มี NO เลขไม่ซ้ำก็นำมาแสดง (ได้ NO.ที่ไม่ซ้ำกัน) เช่น
NO. category
2 I10
3 I100
4 I101
5 I104
1 I102
6 I105
8 I13
9 I110
10 I134กรณีต้องการนับCode: Select all
SELECT A.* FROM (Select * From [select count] Where [select count].[category] Not Like '*Z519*' ) As A LEFT JOIN (Select * From [select count] Where [select count].[category] Not Like '*Z519*') As B ON A.[NO] = B.[NO] AND A.[category] < B.[category] WHERE B.[category] IS NULL Order By A.[NO] ASC
ข้อ 5 ให้สร้าง Query ทำการ Join Table นำคอลัมน์ที่เกี่ยวข้องมาแสดงเสียก่อนแล้วค่อยประยุกต์ Query เหล่านี้ไปใช้อีกทีครับCode: Select all
SELECT Count(A.[category]) As Count FROM (Select * From [select count] Where [select count].[category] Not Like '*Z519*' ) As A LEFT JOIN (Select * From [select count] Where [select count].[category] Not Like '*Z519*') As B ON A.[NO] = B.[NO] AND A.[category] < B.[category] WHERE B.[category] IS NULL
snasui wrote: Fri Jan 03, 2020 8:29 pm ผมดูแล้วที่ลองเขียนมาไม่ได้ใช้แนวทางที่ผมเขียนเป็นต้วอย่างให้ไปแต่อย่างใดครับตัวอย่าง Code ครับTotem wrote: Thu Jan 02, 2020 11:28 am กรณีที 4 1select count category Query
select ข้อมูลใน Tables select count
โดยกำหนดว่า select ข้อมูลใน category
ให้ select ไม่รวม Z519
และในฟิลด์ NO มีเลขซ้ำให้ select รายการเดียวและที่มี NO เลขไม่ซ้ำก็นำมาแสดง (ได้ NO.ที่ไม่ซ้ำกัน) เช่น
NO. category
2 I10
3 I100
4 I101
5 I104
1 I102
6 I105
8 I13
9 I110
10 I134กรณีต้องการนับCode: Select all
SELECT A.* FROM (Select * From [select count] Where [select count].[category] Not Like '*Z519*' ) As A LEFT JOIN (Select * From [select count] Where [select count].[category] Not Like '*Z519*') As B ON A.[NO] = B.[NO] AND A.[category] < B.[category] WHERE B.[category] IS NULL Order By A.[NO] ASC
ได้ตามต้องการครับ ขอบคุณครับCode: Select all
SELECT Count(A.[category]) As Count FROM (Select * From [select count] Where [select count].[category] Not Like '*Z519*' ) As A LEFT JOIN (Select * From [select count] Where [select count].[category] Not Like '*Z519*') As B ON A.[NO] = B.[NO] AND A.[category] < B.[category] WHERE B.[category] IS NULL
Code: Select all
SELECT Count(A.[NO]) AS [Count]
Code: Select all
SELECT Count(A.[NO]) AS [Count]
FROM (Select * From [select count] Where [select count].[category] Like '*Z519*' and [select count].[category] <> 'Z519') As A
LEFT JOIN (Select * From [select count] Where [select count].[category] Like '*Z519*' and [select count].[category] <> 'Z519') As B
ON A.[NO] = B.[NO] AND A.[category] < B.[category]
Code: Select all
SELECT DISTINCT A.[NO] AS [Count]
Code: Select all
SELECT DISTINCT A.[NO] AS [Count]
FROM (Select * From [select count] Where [select count].[category] Like '*Z519*' and [select count].[category] <> 'Z519') As A
LEFT JOIN (Select * From [select count] Where [select count].[category] Like '*Z519*' and [select count].[category] <> 'Z519') As B
ON A.[NO] = B.[NO] AND A.[category] < B.[category]
Code: Select all
SELECT Count(DISTINCT A.[NO]) AS [Count]
FROM (SELECT * FROM [select count] WHERE [select count].[category] Like '*Z519*' and [select count].[category] <> 'Z519') AS A LEFT JOIN (SELECT * FROM [select count] WHERE [select count].[category] Like '*Z519*' and [select count].[category] <> 'Z519') AS B ON (A.[NO] = B.[NO]) AND (A.[category] < B.[category])
Code: Select all
Select Count(R.[NO]) As Count From
(SELECT Distinct(A.[NO])
FROM (SELECT * FROM [select count] WHERE [select count].[category] Like '*Z519*' and [select count].[category] <> 'Z519') AS A LEFT JOIN (SELECT * FROM [select count] WHERE [select count].[category] Like '*Z519*' and [select count].[category] <> 'Z519') AS B ON (A.[NO] = B.[NO]) AND (A.[category] < B.[category])) As R
snasui wrote: Tue Jan 07, 2020 8:22 pm ตัวอย่างการปรับ Query ครับ
Code: Select all
Select Count(R.[NO]) As Count From (SELECT Distinct(A.[NO]) FROM (SELECT * FROM [select count] WHERE [select count].[category] Like '*Z519*' and [select count].[category] <> 'Z519') AS A LEFT JOIN (SELECT * FROM [select count] WHERE [select count].[category] Like '*Z519*' and [select count].[category] <> 'Z519') AS B ON (A.[NO] = B.[NO]) AND (A.[category] < B.[category])) As R