14

By Group ile satır virgülle ayrılmış aşağıdaki sorgu var: Kod group by maddesi olmadığı için elbette SQL maddesi

SELECT 
    Account, 
    Unit, 
    SUM(state_fee), 
    Code 
FROM tblMta 
WHERE MTA.Id = '123' 
GROUP BY Account,Unit 

Bu bir istisna atar

. Her state_fee'nin bir kodu vardır. Bu kodu virgülle ayrılmış bir liste olarak 1 kayıtta (birim başına çoklu state_fee olan state_fee başına 1 kod) görüntülemek için nasıl alabilirim? Burada farklı çözümler aradım ama group by ile çalıştı bulamadım.

cevap

0

hiçbir Orada bitiştirmek için toplama işlevi yerleşik, ancak bu makalede, bir kullanıcı tanımlı bitiştirmek toplama işlevi dahil olmak üzere birçok alternatif çözümler, tartışır yayınladık: FOR XML PATH yapısını kullanmak istiyorum

https://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/

+0

İlk düşündüm o atıf, ama aslında site makale yazarına aittir –

+0

Link öldü. İşte bir alternatif: https://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/ – gpinkas

0

Bu, tablo, indeks adı, indeks türü, endeksli sütunlar gösterebilir ve sütunlar dahil edecektir: projectdms basitçe w/orijinal makaleye sıyırıp

with [indexes] (table_name, index_name, column_name, index_id, key_ordinal, object_id, type_desc) 
as(
SELECT distinct 
    T.[name] AS [table_name], I.[name] AS [index_name], 
    AC.[name] AS [column_name], 
    I.[index_id], IC.[key_ordinal], T.[object_id], i.type_desc 
FROM sys.[tables] AS T 
    INNER JOIN sys.[indexes] I ON T.[object_id] = I.[object_id] 
    INNER JOIN sys.[index_columns] IC ON I.[object_id] = IC.[object_id] and IC.index_id=I.index_id 
    LEFT OUTER JOIN sys.[all_columns] AC ON T.[object_id] = AC.[object_id] AND IC.[column_id] = AC.[column_id] 
WHERE T.[is_ms_shipped] = 0 AND I.[type_desc] <> 'HEAP' 
) 
select 
    distinct 
    db_name() as dbname, 
    type_desc, 
    table_name, 
    index_name, 
    column_name, 
    STUFF((
     select ', ' + column_name 
     from [indexes] t2 
     where t1.table_name=t2.table_name and t1.[index_name]=t2.[index_name] and t2.[key_ordinal] = 0 
     for xml path('')), 1, 2, '') inc_cols 
from [indexes] t1 
where t1.[key_ordinal] = 1 
GROUP BY table_name, index_name, type_desc, column_name