-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTillMinaMedelanden.sql
164 lines (142 loc) · 6.92 KB
/
TillMinaMedelanden.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
IF OBJECT_ID('master.dbo.FracToDec8', 'U') IS NOT NULL
DROP TABLE master.dbo.FracToDec8
create table master.dbo.FracToDec8
(
fra decimal(14, 6),
POSTORT varchar(255),
POSTNUMMER varchar(255),
ADRESS varchar(255),
NAMN varchar(255),
BETECKNING nvarchar(255),
arndenr nvarchar(255),
PERSORGNR nvarchar(255)
);
INSERT INTO master.dbo.FracToDec8(fra, POSTORT, POSTNUMMER, ADRESS, NAMN, BETECKNING, arndenr, PERSORGNR)
SELECT distinct (SELECT master.dbo.FracToDec(andel)) 'fra',
POSTORT,
POSTNUMMER,
ADRESS,
NAMN,
BETECKNING,
tempExcel.dbo.InputPlusGeofir.ärndenr,
PERSORGNR
FROM tempExcel.dbo.InputPlusGeofir;
IF OBJECT_ID('master.dbo.stuffArenden', 'U') IS NOT NULL
DROP TABLE master.dbo.stuffArenden
create table master.dbo.stuffArenden
(
fra decimal(14, 6),
POSTORT varchar(255),
POSTNUMMER varchar(255),
ADRESS varchar(255),
NAMN varchar(255),
BETECKNING nvarchar(255),
arndenr nvarchar(255),
PERSORGNR nvarchar(255),
RowNum bigint
);
INSERT INTO master.dbo.stuffArenden(fra, POSTORT, POSTNUMMER, ADRESS, NAMN, BETECKNING, arndenr, PERSORGNR)
select distinct fra,
POSTORT,
POSTNUMMER,
ADRESS,
NAMN,
BETECKNING,
ltrim(STUFF((SELECT ', ' + CAST(innerTable.arndenr AS nvarchar(50))
FROM FracToDec8 AS innerTable
WHERE ressult.BETECKNING = innerTable.BETECKNING
and IIf(ressult.Namn is null, ressult.BETECKNING, ressult.Namn) =
IIf(innerTable.Namn is null, innerTable.BETECKNING,
innerTable.Namn) --DUE TO sql treating null = null as unknown
order by arndenr desc FOR XML PATH ('')), 1, 1, '')) AS
arndenr,
PERSORGNR
FROM FracToDec8 ressult
group by namn, POSTORT, POSTNUMMER, ADRESS, PERSORGNR, BETECKNING, fra;
IF OBJECT_ID('master.dbo.giveRowNumber', 'U') IS NOT NULL
DROP TABLE master.dbo.giveRowNumber
create table master.dbo.giveRowNumber
(
fra decimal(14, 6),
POSTORT varchar(255),
POSTNUMMER varchar(255),
ADRESS varchar(255),
NAMN varchar(255),
BETECKNING nvarchar(255),
arndenr nvarchar(255),
PERSORGNR nvarchar(255),
RowNum bigint
);
INSERT INTO giveRowNumber(fra, POSTORT, POSTNUMMER, ADRESS, NAMN, BETECKNING, arndenr, PERSORGNR, RowNum)
-- FilterBad as (SELECT fra,POSTORT,POSTNUMMER,ADRESS,NAMN,BETECKNING,arndenr,PERSORGNR,RowNum FROM RowNrByBeteckning WHERE RowNrByBeteckning.postOrt <> '' AND RowNrByBeteckning.POSTNUMMER <> '' AND RowNrByBeteckning.Adress <> '' AND RowNrByBeteckning.Namn IS NOT NULL),
SELECT distinct theTab.fra,
theTab.POSTORT,
theTab.POSTNUMMER,
theTab.ADRESS,
theTab.NAMN,
theTab.BETECKNING,
theTab.arndenr,
theTab.PERSORGNR,
ROW_NUMBER()
OVER (PARTITION BY theTab.BETECKNING,IIf(theTab.arndenr is null, theTab.BETECKNING, theTab.arndenr) ORDER BY theTab.fra DESC) RowNum
FROM stuffArenden AS theTab
INNER JOIN stuffArenden innerTable ON
theTab.BETECKNING = innerTable.BETECKNING and
--DUE TO sql treating null = null as unknown
IIf(theTab.Namn is null, theTab.BETECKNING, theTab.Namn) =
IIf(innerTable.Namn is null, innerTable.BETECKNING, innerTable.Namn)
and
IIf(theTab.arndenr is null, theTab.BETECKNING, theTab.arndenr) =
IIf(innerTable.arndenr is null, innerTable.BETECKNING, innerTable.arndenr);
WITH filterSmallOwners AS (select distinct *
from giveRowNumber
where giveRowNumber.RowNum = 1
UNION
select *
from giveRowNumber
where giveRowNumber.RowNum > 1
AND giveRowNumber.RowNum < 4
AND fra > 0.3)
, stuffBeteckning as (select arndenr,
POSTORT,
POSTNUMMER,
ADRESS,
NAMN,
ltrim(STUFF((SELECT ', ' + CAST(innerTable.BETECKNING AS nvarchar(50))
FROM filterSmallOwners AS innerTable
where
--TODO: fix this DUE TO sql treating null = null as unknown, the table will filter out all null names,
ressult.Namn = innerTable.Namn
order by Beteckning FOR XML PATH ('')), 1, 1, '')) AS Beteckning
from filterSmallOwners ressult
group by namn, POSTORT, POSTNUMMER, ADRESS, arndenr)
, valjLangstArendeNr as (select max(arndenr) arndenr, POSTORT, POSTNUMMER, ADRESS, NAMN, Beteckning
from stuffBeteckning
group by POSTORT, POSTNUMMER, ADRESS, NAMN, Beteckning)
, stuffNamn as (select arndenr,
POSTORT,
POSTNUMMER,
ADRESS,
ltrim(STUFF((SELECT ', ' + CAST(innerTable.Namn AS nvarchar(50))
FROM valjLangstArendeNr AS innerTable
where ressult.BETECKNING = innerTable.BETECKNING
and
--DUE TO sql treating null = null as unknown
IIf(ressult.Adress is null, ressult.BETECKNING, ressult.Adress) =
IIf(innerTable.Adress is null, innerTable.BETECKNING, innerTable.Adress)
and IIf(ressult.arndenr is null, ressult.BETECKNING, ressult.arndenr) =
IIf(innerTable.arndenr is null, innerTable.BETECKNING, innerTable.arndenr)
order by Beteckning FOR XML PATH ('')), 1, 1, '')) AS NAMN,
Beteckning
from valjLangstArendeNr ressult
group by Beteckning, POSTORT, POSTNUMMER, ADRESS, arndenr)
select arndenr, POSTORT, POSTNUMMER, ADRESS, NAMN, Beteckning
from stuffNamn
where Beteckning is not null
union
select arndenr, POSTORT, POSTNUMMER, ADRESS, NAMN, Beteckning
from filterSmallOwners
where namn is null
order by arndenr desc, Beteckning
IF OBJECT_ID('master..#FracToDec8', 'U') IS NOT NULL
DROP TABLE master.dbo.FracToDec8