首先,范圍是一個運行在SQL Server 2000兼容性中的資料庫
。我有一個用于分割字串的自定義函式
CREATE FUNCTION dbo. splitstring ( @stringToSplit VARCHAR(MAX) )
RETURNS[/span
@returnList TABLE ( [Name] [nvarchar] (500)
AS AS
BEGIN[/span
DECLARE @name NVARCHAR(255)
DECLARE @pos INT
WHILE CHARINDEX(','/span>, @stringToSplit) > 0.
BEGIN
SELECT SELECT
@pos = CHARINDEX(',', @stringToSplit) 。
@name = SUBSTRING(@stringToSplit, 1, @pos-1)
INSERT INTO @returnList >。
SELECT ltrim(RTRIM(@name)
SELECT @stringToSplit = SUBSTRING(@stringToSplit, @pos 1, LEN(@stringToSplit) - @pos)
END
INSERT INTO @returnList >。
SELECT ltrim(RTRIM(@stringToSplit)
RETURN
結束。
它作業得很好。
現在是我的問題
我有這樣的資料。
我有這樣的資料:
通過以下方式產生:
由以下SQL陳述句產生:
with CTE as
(
select '1' CustomerID, 'BCONS1' Code union
select '1', 'BCONS2' union
select '2' CustomerID, 'BCONS1' Code union
select '2', 'BCONS2'選擇*
from CTE where CustomerID = 1
union
select Null, s.Name from dbo.splitstring('ACONS1,ACONS2,ACONS3') S
我如何將 "缺失 "的CustomerID添加到我的結果中?
uj5u.com熱心網友回復:
你可以做一個交叉應用,但這在Compat 80級上也不被支持。但是我們仍然可以強制執行兩個表的笛卡爾乘積:
with CTE as
(
select '1' CustomerID, 'BCONS1' Code union
select '1', 'BCONS2' union
select '2' CustomerID, 'BCONS1' Code union
select '2', 'BCONS2'選擇*
from CTE where CustomerID = 1
union
select *
from
(selectdistinct
CustomerID,
s.Value
FROM CTE
, string_split('ACONS1,ACONS2,ACONS3', ', ' ) S
where CustomerID = 1 --限制你需要添加的行
) 資料
注意,我在這里使用了string_split而不是你的函式,因為SEDE不允許我創建函式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/314539.html
標籤:

