---
title: SUMMARIZECOLUMNS – สร้างตารางสรุปแบบ Dynamic Query
url: https://www.thepexcel.com/functions/dax/table-manipulation/summarizecolumns-dax/
type: function-explainer
program: DAX
syntax: "SUMMARIZECOLUMNS( <groupBy_columnName> [, <filterTable>] [, <name>, <expression>] )"
date: 2025-12-13
updated: 2025-12-20
scores:
  popularity: 7
  difficulty: 6
  usefulness: 7
---

# SUMMARIZECOLUMNS – สร้างตารางสรุปแบบ Dynamic Query

> SUMMARIZECOLUMNS เป็นฟังก์ชันหลักสำหรับสร้างตารางสรุปผล โดยจัดกลุ่มตามคอลัมน์ที่กำหนด พร้อมเพิ่มคอลั

## คำอธิบาย

SUMMARIZECOLUMNS เป็นฟังก์ชันหลักสำหรับสร้างตารางสรุปผล โดยจัดกลุ่มตามคอลัมน์ที่กำหนด พร้อมเพิ่มคอลัมน์คำนวณจากเมเชอร์ และสามารถใส่เงื่อนไขกรองได้ทันที

## Syntax

```excel
SUMMARIZECOLUMNS( &lt;groupBy_columnName&gt; [, &lt;filterTable&gt;] [, &lt;name&gt;, &lt;expression&gt;] )
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| groupBy_columnName | Yes | Column |  | คอลัมน์สำหรับจัดกลุ่ม (Group By) ต้องระบุแบบ Fully Qualified เช่น Table[Column] สามารถระบุได้หลายคอลัมน์ แต่ห้ามซ้ำกัน (แต่ละคอลัมน์จะถูก Cross-Join ถ้าต่างตาราง หรือ Auto-Exist ถ้าตารางเดียวกัน) |
| filterTable | No | Table |  | ตารางเงื่อนไขที่ใช้กรองบริบทก่อนทำการ Group By สามารถใช้ฟังก์ชันอย่าง FILTER, TREATAS, KEEPFILTERS, REMOVEFILTERS, NONVISUAL ได้ |
| name | No | Text |  | ชื่อคอลัมน์ใหม่ที่ต้องการเพิ่มในตารางผลลัพธ์ (จับคู่กับ expression) |
| expression | No | Expression |  | นิพจน์ DAX ที่คืนค่าเดี่ยว (ไม่ใช่ตาราง) สำหรับคำนวณค่าในคอลัมน์ใหม่ สามารถระบุได้หลายคู่ name/expression |

## เคสการใช้งาน

### สร้างตารางสรุปเพื่อใช้ตรวจสอบ/ส่งออก

สร้างตารางผลรวมตามมิติที่ต้องการ แล้วใช้ EVALUATE เพื่อดูผลลัพธ์ หรือส่งต่อให้ฟังก์ชันอื่น

_เหมาะกับ:_ build-summary-table

### สรุปผลพร้อมจำกัดบริบทด้วย criteria table

ใส่ตารางเงื่อนไขเพื่อกำหนดว่าให้สรุปเฉพาะบางกลุ่ม/บางค่าที่สนใจ

_เหมาะกับ:_ summary-with-criteria

## ตัวอย่าง

### 1. ตัวอย่างพื้นฐาน - สรุปยอดขายตามหมวดสินค้า

```excel
EVALUATE
SUMMARIZECOLUMNS(
    'Product'[Category],
    "Total Sales", SUM(Sales[Amount])
)
```

**ผลลัพธ์:** `ตารางที่มี 2 คอลัมน์: Category และ Total Sales แสดงยอดขายรวมของแต่ละหมวด`

ระบุ Group By Column คือ Product[Category] และเพิ่มคอลัมน์คำนวณชื่อ "Total Sales" โดยใช้ SUM(Sales[Amount])

### 2. ตัวอย่างการจัดกลุ่มหลายมิติ

```excel
EVALUATE
SUMMARIZECOLUMNS(
    'Product'[Category],
    'Date'[Year],
    "Total Sales", [Sales Amount],
    "Total Quantity", SUM(Sales[Quantity])
)
```

**ผลลัพธ์:** `ตารางที่แสดงยอดขายและจำนวนสินค้าตามหมวดสินค้า x ปี`

จัดกลุ่มทั้ง Product[Category] และ Date[Year] พร้อมเพิ่ม 2 คอลัมน์คำนวณ (Total Sales และ Total Quantity)

### 3. ตัวอย่างการใช้ Filter Table ด้วย TREATAS

```excel
EVALUATE
SUMMARIZECOLUMNS(
    'Product'[Category],
    TREATAS({"Bikes", "Accessories"}, 'Product'[Category]),
    "Sales", [Sales Amount]
)
```

**ผลลัพธ์:** `แสดงเฉพาะหมวด Bikes และ Accessories พร้อมยอดขาย`

ใช้ TREATAS เพื่อจำกัดบริบทให้แสดงเฉพาะหมวดที่กำหนด โดยไม่ต้องใช้ CALCULATE

### 4. ตัวอย่างการใช้ FILTER เพื่อกรองเงื่อนไข

```excel
EVALUATE
SUMMARIZECOLUMNS(
    'Product'[Category],
    'Customer'[Education],
    FILTER('Customer', 'Customer'[FirstName] = "John"),
    "Sales", [Sales Amount]
)
```

**ผลลัพธ์:** `สรุปยอดขายตามหมวดสินค้าและระดับการศึกษาของลูกค้าที่ชื่อ John`

ใช้ FILTER เพื่อจำกัดเฉพาะลูกค้าที่ชื่อ John โดย Filter จะมีผลเฉพาะเมื่อ Customer[Education] อยู่ใน GroupBy Columns (ตาม SelfValue Semantics ของ DAX 2024+)

### 5. ตัวอย่างการสร้าง Subtotal ด้วย ROLLUPADDISSUBTOTAL

```excel
EVALUATE
SUMMARIZECOLUMNS(
    ROLLUPADDISSUBTOTAL('Product'[Category], "IsSubtotal"),
    "Total Sales", SUM(Sales[Amount])
)
```

**ผลลัพธ์:** `ตารางที่แสดงยอดขายแต่ละหมวด พร้อมแถว Grand Total (IsSubtotal = TRUE)`

ROLLUPADDISSUBTOTAL จะเพิ่มแถว Subtotal โดยมีคอลัมน์ IsSubtotal เป็น TRUE สำหรับแถว Subtotal และ FALSE สำหรับแถวรายละเอียด

### 6. ตัวอย่างการใช้ NONVISUAL เพื่อแยก Filter กับ Measure

```excel
EVALUATE
SUMMARIZECOLUMNS(
    'Date'[CalendarYear],
    NONVISUAL(TREATAS({2023, 2024}, 'Date'[CalendarYear])),
    "Sales", [Sales Amount],
    "All Years Sales", CALCULATE([Sales Amount], ALLSELECTED('Date'[CalendarYear]))
)
```

**ผลลัพธ์:** `แสดงยอดขายปี 2023-2024 พร้อมคอลัมน์ที่แสดงยอดรวมทุกปี`

NONVISUAL ทำให้ TREATAS มีผลเฉพาะกับ GroupBy Column แต่ไม่กระทบกับการคำนวณ Measure ทำให้ All Years Sales คำนวณจากทุกปีได้

### 7. ตัวอย่าง Edge Case - แถวที่ Expression เป็น BLANK จะถูกตัดออก

```excel
EVALUATE
SUMMARIZECOLUMNS(
    'Product'[Category],
    "High Value Sales", IF(SUM(Sales[Amount]) > 100000, SUM(Sales[Amount]))
)
```

**ผลลัพธ์:** `แสดงเฉพาะหมวดที่มียอดขายเกิน 100,000 (หมวดที่น้อยกว่าจะไม่แสดงเพราะ IF คืน BLANK)`

SUMMARIZECOLUMNS จะคืนเฉพาะแถวที่มีอย่างน้อยหนึ่ง Expression ไม่เป็น BLANK ถ้าต้องการให้แสดงทุกแถว ใช้ IGNORE() ห่อ Expression

## หมายเหตุเพิ่มเติม

- ใช้ SUMMARIZECOLUMNS แทน SUMMARIZE เสมอ เพราะประสิทธิภาพดีกว่าและรองรับฟีเจอร์ใหม่ ๆ

- ถ้าต้องการ Subtotal ให้ใช้ ROLLUPADDISSUBTOTAL และ ROLLUPGROUP แทนการสร้างหลายตาราง

- ระวังเรื่อง BLANK Handling - ใช้ IGNORE() เพื่อบังคับให้แสดงแถวแม้ Expression เป็น BLANK

- ใช้ NONVISUAL เมื่อต้องการให้ Filter มีผลเฉพาะกับ GroupBy Column แต่ไม่กระทบ Measure

- ถ้าใช้ใน DAX Studio แนะนำให้เพิ่ม ORDER BY เพราะ SUMMARIZECOLUMNS ไม่การันตีลำดับผลลัพธ์

- เข้าใจ SelfValue Semantics (2024+) - Filter จากตารางภายนอกไม่มีผลกับ GroupBy Column เว้นแต่จะอยู่ในตารางเดียวกัน

## คำถามที่พบบ่อย

**Q: SUMMARIZECOLUMNS ต่างจาก SUMMARIZE อย่างไร?**

SUMMARIZECOLUMNS เป็นฟังก์ชันใหม่กว่าและออกแบบมาสำหรับการสร้างตารางสรุปโดยเฉพาะ มีประสิทธิภาพดีกว่า SUMMARIZE และรองรับ Filter Table, ROLLUP และ Context Transition ได้ดีกว่า แนะนำให้ใช้ SUMMARIZECOLUMNS แทน SUMMARIZE ในทุกกรณีที่ทำได้

**Q: ทำไมบางแถวไม่แสดงในผลลัพธ์?**

SUMMARIZECOLUMNS จะคืนเฉพาะแถวที่มีอย่างน้อยหนึ่ง Expression คืนค่าไม่เป็น BLANK ถ้าทุก Expression เป็น BLANK แถวนั้นจะถูกตัดออก ถ้าต้องการให้แสดงทุกแถว ให้ใช้ IGNORE() ห่อ Expression ที่อาจเป็น BLANK

**Q: ใช้ SUMMARIZECOLUMNS ใน Measure ได้ไหม?**

ได้ครับ ตั้งแต่ DAX 2024 (June 2024 Update) ขึ้นไป SUMMARIZECOLUMNS รองรับ Context Transition ใน Measure แล้ว แต่ต้องระวังเรื่อง Performance เพราะ SUMMARIZECOLUMNS จะสร้างตารางทั้งหมดทุกครั้งที่ Evaluate

**Q: Filter Table ทำงานอย่างไร?**

Filter Table จะถูกนำไปใช้กรอง Filter Context ก่อนทำการ Cross-Join/Auto-Exist ของ GroupBy Columns แต่ตาม SelfValue Semantics (2024+) Filter จากตารางภายนอกจะไม่มีผลกับ GroupBy Columns ยกเว้นว่าคอลัมน์นั้นอยู่ในตารางเดียวกับ Filter หรือเป็น GroupBy Column เอง

**Q: DirectQuery รองรับ SUMMARIZECOLUMNS ไหม?**

รองรับแต่มีข้อจำกัด คือใช้ใน Calculated Column หรือ RLS Rules ไม่ได้ แต่ใช้ใน Measure และ Calculated Table ได้ปกติ

**Q: ROLLUPADDISSUBTOTAL ทำอะไร?**

เพิ่มแถว Subtotal/Grand Total ในตารางผลลัพธ์โดยอัตโนมัติ พร้อมเพิ่มคอลัมน์ Boolean เพื่อระบุว่าแถวไหนเป็น Subtotal (TRUE) หรือรายละเอียด (FALSE) เหมาะสำหรับสร้างรายงานที่ต้องการ Summary ทุกระดับ

## ฟังก์ชันที่เกี่ยวข้อง

- [SUMMARIZE – จัดกลุ่มข้อมูลและสร้างตารางสรุป (Table Grouping)](https://www.thepexcel.com/functions/dax/table-manipulation/summarize-dax/)
- [ADDCOLUMNS – เพิ่มคอลัมน์คำนวณให้ตาราง](https://www.thepexcel.com/functions/dax/table-manipulation/addcolumns-dax/)
- [SELECTCOLUMNS – ฟังก์ชัน DAX](https://www.thepexcel.com/functions/dax/table-manipulation/selectcolumns-dax/)
- [ROLLUPADDISSUBTOTAL – เพิ่ม roll-up rows ใน SUMMARIZECOLUMNS พร้อมคอลัมน์บอก subtotal](https://www.thepexcel.com/functions/dax/table-manipulation/rollupaddissubtotal-dax/)
- [ROLLUPGROUP – จัดกลุ่มคอลัมน์เพื่อลดจำนวน subtotal ใน roll-up](https://www.thepexcel.com/functions/dax/table-manipulation/rollupgroup-dax/)
- [TREATAS – ส่งค่าข้ามตารางแบบเสมือน ไม่ต้องมี Relationship](https://www.thepexcel.com/functions/dax/table-manipulation/treatas-dax/)
- [NONVISUAL – ทำให้ตัวกรองไม่ส่งผลกระทบต่อสิ่งที่ visual แสดง](https://www.thepexcel.com/functions/dax/table-manipulation/nonvisual-dax/)
- [IGNORE – ไม่ให้นิพจน์ถูกใช้ตัดแถวว่างใน SUMMARIZECOLUMNS](https://www.thepexcel.com/functions/dax/table-manipulation/ignore-dax/)
- [KEEPFILTERS – คงตัวกรองเดิมไว้ (Preserve Filters)](https://www.thepexcel.com/functions/dax/filter/keepfilters-dax/)
- [REMOVEFILTERS – ลบตัวกรองออกจากตาราง/คอลัมน์](https://www.thepexcel.com/functions/dax/filter/removefilters-dax/)

## แหล่งข้อมูลเพิ่มเติม

- [Microsoft Learn: SUMMARIZECOLUMNS function (DAX)](https://learn.microsoft.com/en-us/dax/summarizecolumns-function-dax) _(official)_
- [DAX Guide: SUMMARIZECOLUMNS](https://dax.guide/summarizecolumns/) _(guide)_
- [SQLBI: Understanding SUMMARIZECOLUMNS](https://www.sqlbi.com/articles/introducing-summarizecolumns/) _(guide)_

---

_Source: [https://www.thepexcel.com/functions/dax/table-manipulation/summarizecolumns-dax/](https://www.thepexcel.com/functions/dax/table-manipulation/summarizecolumns-dax/)_
