Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Câu lệnh SQL CONCAT IF?

SELECT  agenda.AgendaItemNumber,
        Agenda.AgendaName, 
        AgendaType.AgendaTypeDescription, 
        STUFF(( SELECT  ';' + FullName 
                FROM    UserDetails
                WHERE   UserDetails.AgendaID = Agenda.AgendaID
                FOR XML PATH('')
            ), 1, 1, '') AS fullName 
FROM    Agenda
        INNER JOIN AgendaType 
            ON AgendaType.AgendaTypeID=Agenda.AgendaTypeID
        INNER JOIN UserDetails 
            ON Agenda.AgendaID = Userdetails.AgendaID
WHERE   agenda.AgendaTypeID = '2'
AND     AgendaItemNumber = AgendaItemNumber
AND     AgendaName = AgendaName
AND     AgendaTypeDescription = AgendaTypeDescription
AND     AgendaItemNumber >= '3'

ADENDUM

Phần mở rộng XML trong SQL-Server cho phép bạn nối nhiều hàng thành một hàng. Mục đích thực sự của phần mở rộng là để bạn có thể xuất ra dưới dạng XML (hiển nhiên), nhưng có một số thủ thuật tiện lợi là sản phẩm phụ của phần mở rộng. Trong truy vấn trên, nếu có tên cột trong truy vấn con (FullName), nó sẽ xuất ra dưới dạng <FullName>Joe Bloggs1</FullName><FullName>Joe Bloggs2</FullName> , bởi vì không có tên cột, nó chỉ đơn giản là nối các hàng (không tạo thành XML thích hợp). PATH phần cho phép bạn chỉ định một nút bổ sung, ví dụ:nếu bạn sử dụng PATH ('Tên') ở trên, bạn sẽ nhận được <Name>;Joe Bloggs</Name><Name>;Joe Bloggs2</Name> Nếu bạn kết hợp Đường dẫn với một tên cột, bạn sẽ nhận được Joe Bloggs.

Cuối cùng là STUFF chỉ cần xóa dấu chấm phẩy ở đầu danh sách.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tìm ngôn ngữ mặc định của người dùng trong SQL Server (T-SQL)

  2. Mệnh đề OrderBy dẫn đến các tập kết quả khác nhau khi cột đặt hàng có cùng dữ liệu

  3. System.AccessViolationException trong .NET 4.0 khi kết nối với Cơ sở dữ liệu SQL

  4. SQL Server 2008 FullTextSearch một ký tự trong tên bị thiếu trong kết quả

  5. 5 cách lấy tên tháng ngắn từ ngày trong SQL Server