Saya menggunakan pertanyaan ini untuk membuat jadual HTML dan menghantar melalui e-mel. Adakah mungkin untuk menggabungkan sel untuk meningkatkan kebolehbacaan hanya apabila lajur "ID Kumpulan" dan "Jumlah Transaksi" mempunyai nilai yang sama? Kat bawah ni result yang saya nak dapat
CREATE TABLE #list (GroupID int,AccountID int,Country varchar (20),AccountTransactionSum int) Insert into #list values (1,18754,'United Kingdom',110), (1,24865,'Germany',265), (1,82456,'Poland',1445), (1,98668,'United Kingdom',60), (1,37843,'France',1490), (2,97348,'United Kingdom',770) DECLARE @xmlBody XML SET @xmlBody = (SELECT (SELECT GroupID, AccountID, Country, AccountTransactionSum, TotalTransactionSum = sum(AccountTransactionSum) over (partition by GroupID) FROM #list ORDER BY GroupID FOR XML PATH('row'), TYPE, ROOT('root')).query('<html><head><meta charset="utf-8"/><style> table <![CDATA[ {border-collapse: collapse; } ]]> th <![CDATA[ {background-color: #4CAF50; color: white;} ]]> th, td <![CDATA[ { text-align: center; padding: 8px;} ]]> tr:nth-child(even) <![CDATA[ {background-color: #f2f2f2;} ]]> </style></head> <body><table border="1" cellpadding="10" style="border-collapse:collapse;"> <thead><tr> <th>No.</th> <th> Group ID </th><th> Account ID </th><th> Country </th><th> Account Transaction Sum </th><th> Total Transaction Sum </th> </tr></thead> <tbody> {for $row in /root/row let $pos := count(root/row[. << $row]) + 1 return <tr align="center" valign="center"> <td>{$pos}</td> <td>{data($row/GroupID)}</td><td>{data($row/AccountID)}</td><td>{data($row/Country)}</td><td>{data($row/AccountTransactionSum)}</td><td>{data($row/TotalTransactionSum)}</td> </tr>} </tbody></table></body></html>')); select @xmlBody
Hasil yang saya dapat
Hasil yang saya mahukan
Pautan ke editor HTML https://codebeautify.org/real-time-html-editor/y237bf87d
Untuk jawapan Siggemannen yang sangat bagus, saya hanya ingin menambah cara alternatif untuk mengendalikan td tersebut dalam xquery,
Selepas menentukan rentang baris dan paparan, anda boleh menggunakannya dalam xquery untuk gelung
Ini soalan yang bagus kerana saya tidak tahu
xquery
boleh melakukan sihir ini! Inilah yang saya hasilkan:Pada asasnya saya mencipta dua lajur, rowspan dan skipTd. Yang pertama mengawal sama ada rentang baris harus digunakan dan yang kedua menunjukkan sama ada semasa harus dilangkau kerana ia tergolong dalam kumpulan yang sama.
Saya kemudian menambahkan if bersarang untuk xquery supaya ia mengembalikan rowspanned, "langkau" atau HTML biasa berdasarkan kedua-dua bendera tersebut. Mungkin ada cara yang lebih baik, saya bukan pakar.