Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kumpulan Hasil Dibatasi Koma + Kueri SQL

Ini adalah pendekatan yang sangat baik dan telah diterima dengan cukup baik. Ada beberapa pendekatan dan ini entri blog menggambarkan banyak dari mereka.

Salah satu pendekatan menarik yang ada adalah menggunakan CLR untuk melakukan pekerjaan untuk Anda yang secara signifikan akan mengurangi kompleksitas kueri dengan trade-off menjalankan kode eksternal. Berikut adalah contoh tampilan kelas dalam majelis.

using System;
using System.Collections.Generic;
using System.Data.SqlTypes;
using System.IO;
using Microsoft.SqlServer.Server;

[Serializable]
[SqlUserDefinedAggregate(Format.UserDefined,  MaxByteSize=8000)]
public struct strconcat : IBinarySerialize{

    private List values;

    public void Init()    {
        this.values = new List();
    }

    public void Accumulate(SqlString value)    {
        this.values.Add(value.Value);
    }

    public void Merge(strconcat value)    {
        this.values.AddRange(value.values.ToArray());
    }

    public SqlString Terminate()    {
        return new SqlString(string.Join(", ", this.values.ToArray()));
    }

    public void Read(BinaryReader r)    {
        int itemCount = r.ReadInt32();
        this.values = new List(itemCount);
        for (int i = 0; i <= itemCount - 1; i++)    {
            this.values.Add(r.ReadString());
        }
    }

    public void Write(BinaryWriter w)    {
        w.Write(this.values.Count);
        foreach (string s in this.values)      {
            w.Write(s);
        }
    }
}

Dan itu akan membuat kueri sedikit lebih seperti ini.

SELECT CategoryId,
           dbo.strconcat(ProductName)
      FROM Products
     GROUP BY CategoryId ;

Yang jelas sedikit lebih sederhana. Ambillah untuk apa nilainya :)

Selamat siang!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:pivot dinamis lebih dari 5 kolom

  2. Masukkan beberapa baris nilai default ke dalam tabel

  3. Apakah ada .NET yang setara dengan newsequentialid() SQL Server ()

  4. Buat daftar kueri yang berjalan di SQL Server

  5. Apakah praktik buruk NOLOCK (Petunjuk Sql Server)?