久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

在 SQL 視圖中使用 COALESCE

Using COALESCE in SQL view(在 SQL 視圖中使用 COALESCE)
本文介紹了在 SQL 視圖中使用 COALESCE的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我需要從多個表創建一個視圖.視圖中的一列必須由表中的多行組成,作為帶有逗號分隔值的字符串.

I need to create a view from several tables. One of the columns in the view will have to be composed out of a number of rows from one of the table as a string with comma-separated values.

這是我想做的事情的一個簡化示例.

Here is a simplified example of what I want to do.

Customers:
CustomerId int
CustomerName VARCHAR(100)

Orders:
CustomerId int
OrderName VARCHAR(100)

客戶和訂單之間存在一對多關系.所以給定這個數據

There is a one-to-many relationship between Customer and Orders. So given this data

Customers
1 'John'
2 'Marry'

Orders
1 'New Hat'
1 'New Book'
1 'New Phone'

我想要這樣的視圖:

Name     Orders
'John'   New Hat, New Book, New Phone
'Marry'  NULL

這樣每個人都會出現在表格中,無論他們是否有訂單.

So that EVERYBODY shows up in the table, regardless of whether they have orders or not.

我有一個需要轉換為該視圖的存儲過程,但您似乎無法在視圖中聲明參數和調用存儲過程.關于如何將此查詢放入視圖中的任何建議?

I have a stored procedure that i need to translate to this view, but it seems that you cant declare params and call stored procs within a view. Any suggestions on how to get this query into a view?

CREATE PROCEDURE getCustomerOrders(@customerId int)
AS
   DECLARE @CustomerName varchar(100)
   DECLARE @Orders varchar (5000)

   SELECT @Orders=COALESCE(@Orders,'') + COALESCE(OrderName,'') + ',' 
   FROM Orders WHERE CustomerId=@customerId

   -- this has to be done separately in case orders returns NULL, so no customers are excluded
   SELECT @CustomerName=CustomerName FROM Customers WHERE CustomerId=@customerId

   SELECT @CustomerName as CustomerName, @Orders as Orders

推薦答案

EDIT:修改答案以包含視圖的創建.

EDIT: Modified answer to include creation of view.

/* Set up sample data */
create table Customers (
    CustomerId int,
    CustomerName VARCHAR(100)
)

create table Orders (
    CustomerId int,
    OrderName VARCHAR(100)
)

insert into Customers
    (CustomerId, CustomerName)
    select 1, 'John' union all
    select 2, 'Marry'

insert into Orders
    (CustomerId, OrderName)
    select 1, 'New Hat' union all
    select 1, 'New Book' union all
    select 1, 'New Phone'
go

/* Create the view */       
create view OrderView as    
    select c.CustomerName, x.OrderNames
        from Customers c
            cross apply (select stuff((select ',' + OrderName from Orders o where o.CustomerId = c.CustomerId for xml path('')),1,1,'') as OrderNames) x
go

/* Demo the view */
select * from OrderView
go 

/* Clean up after demo */
drop view OrderView
drop table Customers
drop table Orders
go

這篇關于在 SQL 視圖中使用 COALESCE的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

SQL trigger on Truncate(截斷時的 SQL 觸發器)
sql search query with multiple optional search parameters(具有多個可選搜索參數的 sql 搜索查詢)
SQL Efficiency: WHERE IN Subquery vs. JOIN then GROUP(SQL 效率:WHERE IN 子查詢 vs. JOIN 然后 GROUP)
Retrieving XML element name using t-SQL(使用 t-SQL 檢索 XML 元素名稱)
Insert double quotes into SQL output(在 SQL 輸出中插入雙引號)
Delete rows from CTE in SQL SERVER(從 SQL SERVER 中的 CTE 中刪除行)
主站蜘蛛池模板: 一区二视频 | 欧美精品一区在线 | 亚洲国产二区 | 色资源av| 中文字幕av网址 | 综合色久| 91精品久久久久久久久久 | 91福利网址| 免费毛片网站在线观看 | 一区二区在线 | 国产精品久久久久久久久久久久冷 | 美女露尿口视频 | 免费在线观看一区二区 | 国产精品免费一区二区三区四区 | 亚洲天堂免费 | 日韩电影中文字幕 | 欧美一级免费看 | 亚洲精品一区二区三区中文字幕 | 超碰91在线 | www免费视频 | 午夜免费视频观看 | 日本一区二区高清不卡 | 亚洲日本激情 | a级大毛片| www.久久| 欧美日韩国产一区二区三区 | 国产一区二区三区高清 | 涩涩操| 中文字幕在线观看 | 天天插天天操 | 国产免费观看一区 | 欧美日韩中文在线 | 欧美1区2区| 自拍 亚洲 欧美 老师 丝袜 | 五月天国产 | 国产精品乱码一区二区三区 | 91在线看 | 国产精品久久久久久婷婷天堂 | 国产精品一区二区av | 狠狠操狠狠色 | 福利视频网站 |