表1:姓名 戶碼 電費 日期
小花 112,114,118 10000 2020-1-1
小花 112,114,116 15000 2020-8-1
張三 115,114,117 35000 2020-1-13
張三 112,114,118 23000 2020-6-10
表2:姓名 戶碼 電費 日期
小花 112 30 2020-1-3
小花 113 50 2020-1-10
小花 114 20 2020-1-13
小花 114 10 2020-1-23
小花 118 40 2020-2-3
張三 115 60 2020-1-3
表3 取表2的日期2020.1.1-2020.4.1
如:
(表1的)姓名 (表1的)戶碼 (表2的) 電費
小花 112,114,118,116 100
uj5u.com熱心網友回復:
第一個表戶碼怎么有重復uj5u.com熱心網友回復:
表相連好連,但是那個字串去重合并就有點...uj5u.com熱心網友回復:
第一個表戶碼的確重復,需要去重,雖然兩個表相連,但情況確實復雜uj5u.com熱心網友回復:
求大神解答。。。uj5u.com熱心網友回復:
沒有STRING_SPLIT函式的話就只好自己寫一個類似的函式了..
create function xxsplit(@sql varchar(MAX),@xx varchar(20))
returns @temp table(value varchar(20))
as
begin
declare @i int
set @i=charindex(@xx,@sql)
while @i>=1
begin
insert @temp values(left(@sql,@i-1))
set @sql=substring(@sql,@i+1,len(@sql)-@i)
set @i=charindex(@xx,@sql)
end
insert into @temp values(@sql)
return
end
CREATE TABLE #A
(
NAME VARCHAR(20),
HUMA VARCHAR(50),
DIANFEI INT,
RIQI DATE
)
CREATE TABLE #B
(
NAME VARCHAR(20),
HUMA VARCHAR(50),
DIANFEI INT,
RIQI DATE
)
INSERT INTO #A VALUES ('小花','112,114,118',10000,'2020-1-1')
INSERT INTO #A VALUES ('小花','112,114,116',15000,'2020-8-1')
INSERT INTO #A VALUES ('張三','115,114,117',35000,'2020-1-13')
INSERT INTO #A VALUES ('張三','112,114,118',23000,'2020-6-10')
INSERT INTO #B VALUES ('小花','112',30,'2020-1-3')
INSERT INTO #B VALUES ('小花','113',50,'2020-1-10')
INSERT INTO #B VALUES ('小花','114',20,'2020-1-13')
INSERT INTO #B VALUES ('小花','114',10,'2020-1-23')
INSERT INTO #B VALUES ('小花','118',40,'2020-2-3')
INSERT INTO #B VALUES ('張三','115',60,'2020-1-3')
DECLARE @START DATE,@END DATE
SET @START = '2020.1.1'
SET @END = '2020.3.1'
SELECT AA.NAME 姓名,
STUFF((SELECT DISTINCT ','+value FROM xxsplit(MAX(AA.HUMA),',') FOR XML PATH('')),1,2,'') 戶口,
SUM(BB.DIANFEI) 電費 FROM (
SELECT A.NAME,
(SELECT STUFF((SELECT ','+HUMA FROM #A B WHERE B.NAME=A.NAME FOR XML PATH ('')),1,0,''))+',' HUMA
FROM #A A GROUP BY A.NAME) AA,#B BB
WHERE AA.NAME = BB.NAME AND CHARINDEX((','+BB.HUMA+','),AA.HUMA) != 0
AND BB.RIQI BETWEEN @START AND @END
GROUP BY AA.NAME
DROP TABLE #A,#B
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/239416.html
標籤:應用實例
