Vraag : De complexe SQL 2005 Nodig Hulp van de Vraag

Vooral, wordt SQL behandeld dynamisch door de server - daarom, de codage in WAAR de clausule aan u oneven zal kijken. Gelieve te negeren dit, als zijn niet de kwestie.

What mijn cliëntbehoeften een Algemeen Rapport is van het Grootboek dat een compenserend Krediet aan een Debet OF Debet aan een Krediet heeft. de Lasten

The het „Krediet“ zijn en in mijn SQL hieronder met een „Tussenvoegsel laadt“ vóór het Tussenvoegsel op #Summary geïdentificeerd.  De betalingen en de Aanpassingen zullen het „Debet“ zijn en kunnen in mijn SQL hieronder na zelfde concept worden gevonden.

What I de behoeftehulp met doet een tussenvoegsel met de nauwkeurige zelfde waarden (minus twee gebieden, die ik) kan daarna uitgeven die de „Last“ of „Debet“ zal compenseren.

bijvoorbeeld, was een last vandaag ingegaan in het systeem en in mijn dataset zou het als dit kijken:

TicketNumber: 000584
Visit: 2010-07-28 12:50: 00.000
EntityCode: jaar 01
Fiscal: periode 10
Fiscal: 01
Subsystem: GL
SourceCode: JRNENT
DeptSubAccount: 1973 0302
Amount: 104.00
Debit/Credit: C
Description: Identiteitskaart/>Proj van de Ingang
Filler:                 de behoefte

What I moet dit nauwkeurige zelfde resultaat kopiëren en op mijn gebied van het Debet/van het Krediet zou ik het van „C“ in „D“ veranderen en ik zou ook het gebied DeptSubAccount in a moeten veranderen hardcoded waarde die ik in die logica kan toevoegen nadat ik dit deel gericht krijg.

Essentially, zijn er 3 componenten aan het rapport: een last of een Betaling of een Aanpassing. Als ik één hiervan heb, moet ik het kopiëren en een andere rij in mijn dataset en tik van of „D“ aan „C“ of van „C“ veroorzaken aan „D“. Ik hoop dit, als steek houdt me niet vragen waar uw verward en ik mijn beste het zal doen re-verklaren.
" codeBody "
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:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
SET NOCOUNT 

/********* Bepaal het begin van fiscaal jaar ***************************/

VERKLAAR 
	@otherlong int.
SELECTEER
	@otherlong = ISNULL (otherlong, 1)
VAN
	Medlists
WAAR
	tablename = „fiscalyear“

/***********************************************************************************/

CRE�ëR #Summary LIJST
	(
	[TicketNumber] VARCHAR (20),
	[Bezoek] DATETIME, 
	[EntityCode] VARCHAR (2),
  	[Fiscaal Jaar] VARCHAR (2),
  	[Fiscale Periode] VARCHAR (2),
  	[Subsysteem] VARCHAR (2),
  	[BronCode] VARCHAR (6),
  	[DeptSubAccount] VARCHAR (20),
  	[Bedrag] VARCHAR (22),
  	[Debet/Krediet] VARCHAR (1),
  	[Beschrijving] VARCHAR (50),
  	[Identiteitskaart Proj] VARCHAR (6),
	[Vuller] VARCHAR (16)
	)

-- De Lasten van het tussenvoegsel 

TUSSENVOEGSEL IN #Summary

SELECTEER
	pv.TicketNumber,
	pv. Bezoek,
	„01“ ALS EntityCode,
	RECHT (JAAR (DATEADD (m, - (@otherlong - 1), Bezoek)) , 2) ZOALS [Fiscaal Jaar],
	LINKERZIJDE (BEKEERLING (VARCHAR, DATEADD (m, - (@otherlong - 1), Bezoek), 101), 2) ZOALS [Fiscale Periode],
	„GL“ ZOALS [Subsysteem],
	„JRNENT“ ZOALS [BronCode],
	LINKERZIJDE (ISNULL (doc. Het grootboek, '') + RUIMTE (10), 10) + GING weg (LINKS (ISNULL (fac. Het grootboek, ''), 2) + GING weg (ISNULL (vin. Grootboek, ''), 2) + RUIMTE (10), 10) ZOALS [DeptSubAccount],
	LINKERZIJDE (varchar BEKEERLING (, SOM (pvp.totalfee)) + RUIMTE (22), 22) ZOALS [Bedrag],	
	„C“ ZOALS [Debet/Krediet],
	„Ingang Centricity“ + RUIMTE (34) ZOALS [Beschrijving],
	RUIMTE (6) ZOALS [Identiteitskaart Proj],
	RUIMTE (16) ZOALS [Vuller]

VAN
	PatientVisit pv 
	BINNEN SLUIT me aan bij DoctorFacility comp OP pv.CompanyId = comp.DoctorFacilityId 
	BINNEN SLUIT me aan bij DoctorFacility fac OP pv.FacilityId = fac.DoctorFacilityId 
	BINNEN SLUIT me aan bij doc. DoctorFacility OP pv.DoctorId = doc.DoctorFacilityId 
	LINKER BUITEN SLUIT zich aan bij vin Medlists OP pv.FinancialClassMId = fin.MedListsId 
	BINNEN SLUIT me aan bij PatientProfile pp OP pv.PatientProfileId = pp.PatientProfileId 
	BINNEN SLUIT me aan bij PatientVisitProcs pvp OP pv.PatientVisitId = pvp.PatientVisitId 
	BINNEN SLUIT me aan bij Partij B OP pvp.BatchID = b.BatchID 
	BINNEN SLUIT me aan bij pvpa PatientVisitProcsAgg OP pvp.PatientVisitProcsID = pvpa.PatientVisitProcsID 
	LINKER BUITEN SLUIT zich aan bij Procedures p OP pvp.ProceduresID = p.ProceduresID 
	De LINKERZIJDE SLUIT zich aan bij MedLists Procs OP p.DepartmentMId = procs.MedListsId

WAAR 
	b.entry >= ISNULL („07/01/2010“, „1/1/1900“) EN b.Status <> 0
	EN B.ENTRY < DATEADD (DAG, 1, ISNULL („07/31/2010“, „1/1/3000“)
	)	
	EN  --Filter op Faciliteit
	(
	(ONGELDIG NIET IS ONGELDIG EN (ONGELDIGE) pv.FacilityID BINNEN) OF
	(ONGELDIG IS ONGELDIG)
	)
	EN  --Filter op Bedrijf
	(
	(ONGELDIG NIET IS ONGELDIG EN (ONGELDIGE) pv.CompanyID BINNEN) OF
	(ONGELDIG IS ONGELDIG)
	)
	EN  --Filter op Financiële Klasse
	(
	(ONGELDIG NIET IS ONGELDIG EN (ONGELDIGE) pv.FinancialClassMID BINNEN) OF
	(ONGELDIG IS ONGELDIG)
	)

GROEP LANGS
	pv.TicketNumber,
	pv. Bezoek,
	doc. Grootboek,
	fac. Grootboek,
	vin. Grootboek

HEBBEND
	SOM (pvp.TotalFee) <> 0
     
-- De Betalingen van het tussenvoegsel 

TUSSENVOEGSEL IN #Summary

SELECTEER
	pv.TicketNumber,
	pv. Bezoek,
	„01“ ALS EntityCode,
	RECHT (JAAR (DATEADD (m, - (@otherlong - 1), b.Entry)) , 2) ZOALS [Fiscaal Jaar],
	LINKERZIJDE (BEKEERLING (VARCHAR, DATEADD (m, - (@otherlong - 1), b.Entry), 101), 2) ZOALS [Fiscale Periode],
	„GL“ ZOALS [Subsysteem],
	„JRNENT“ ZOALS [BronCode],	
	LINKERZIJDE (ISNULL (pymt. Grootboek, '') + RUIMTE (20), 20) ZOALS [DeptSubAccount], 
	LINKERZIJDE (varchar BEKEERLING (, t.amount) + RUIMTE (22), 22) ZOALS [Bedrag],
	„D“ ZOALS [Debet/Krediet],
	„Ingang Centricity“ + RUIMTE (34) ZOALS [Beschrijving],
	RUIMTE (6) ZOALS [Identiteitskaart Proj],
	RUIMTE (16) ZOALS [Vuller]

VAN
	PatientVisit pv 
	BINNEN SLUIT me aan bij DoctorFacility comp OP pv.CompanyId = comp.DoctorFacilityId 
	BINNEN SLUIT me aan bij DoctorFacility fac OP pv.FacilityId = fac.DoctorFacilityId 
	BINNEN SLUIT me aan bij doc. DoctorFacility OP pv.DoctorId = doc.DoctorFacilityId 
	LINKER BUITEN SLUIT zich aan bij vin Medlists OP pv.FinancialClassMId = fin.MedListsId 
	BINNEN SLUIT me aan bij PatientProfile pp OP pv.PatientProfileId = pp.PatientProfileId
	BINNEN SLUIT me aan bij vt VisitTransactions OP pv.PatientVisitId = vt.PatientVisitid 
	BINNEN SLUIT me aan bij PaymentMethod p.m. OP vt.PaymentMethodId = pm.PaymentMethodId 
	BINNEN SLUIT me aan bij Partij B OP pm.BatchID = b.BatchID 
	BINNEN SLUIT me aan bij Transacties t OP vt.VisitTransactionsId = t.VisitTransactionsId 
	LINKER BUITEN SLUIT aan bij MedLists zich bij OP t.ActionTypeMId = at.MedListsId 
	LINKER BUITEN TREEDT (selecteer * uit medlists waar tablename = „PaymentTypes“) pymt toe OP t.ActionTypeMId = pymt.MedlistsId 
WAAR 
	t.Action = „P“ EN b.Status <> 0
	EN NIET BESTAAT (SELECTEER 1 VAN PaymentMethod pm1 WAAR vt.PaymentMethodId = pm1.PaymentMethodId EN pm1.InsuranceTransfer = 1)
	EN b.entry >= ISNULL („07/01/2010“, „1/1/1900“) 
	EN B.ENTRY < DATEADD (DAG, 1, ISNULL („07/31/2010“, „1/1/3000“)
	)	
	EN  --Filter op Faciliteit
	(
	(ONGELDIG NIET IS ONGELDIG EN (ONGELDIGE) pv.FacilityID BINNEN) OF
	(ONGELDIG IS ONGELDIG)
	)
	EN  --Filter op Bedrijf
	(
	(ONGELDIG NIET IS ONGELDIG EN (ONGELDIGE) pv.CompanyID BINNEN) OF
	(ONGELDIG IS ONGELDIG)
	)
	EN  --Filter op Financiële Klasse
	(
	(ONGELDIG NIET IS ONGELDIG EN (ONGELDIGE) pv.FinancialClassMID BINNEN) OF
	(ONGELDIG IS ONGELDIG)
	)

GROEP LANGS
	pv.TicketNumber,
	b.Entry,
	t.Amount,
	pv. Bezoek,
	doc. Grootboek,
	fac. Grootboek,
	vin. Grootboek,
	pymt. Grootboek
	
HEBBEND
	t.amount <> 0

-- De Aanpassingen van het tussenvoegsel

TUSSENVOEGSEL IN #Summary

SELECTEER
	pv.TicketNumber,
	pv. Bezoek,
	„01“ ALS EntityCode,
	RECHT (JAAR (DATEADD (m, - (@otherlong - 1), b.Entry)) , 2) ZOALS [Fiscaal Jaar],
	LINKERZIJDE (BEKEERLING (VARCHAR, DATEADD (m, - (@otherlong - 1), b.Entry), 101), 2) ZOALS [Fiscale Periode],
	„GL“ ZOALS [Subsysteem],
	„JRNENT“ ZOALS [BronCode],
	LINKERZIJDE (ISNULL (adj. Grootboek, '') + RUIMTE (20), 20) ZOALS [DeptSubAccount],
	LINKERZIJDE (varchar BEKEERLING (, t.amount) + RUIMTE (22), 22) ZOALS [Bedrag],
	„D“ ZOALS [Debet/Krediet],
	„Ingang Centricity“ + RUIMTE (34) ZOALS [Beschrijving],
	RUIMTE (6) ZOALS [Identiteitskaart Proj],
	RUIMTE (16) ZOALS [Vuller]

VAN
	PatientVisit pv 
	BINNEN SLUIT me aan bij DoctorFacility comp OP pv.CompanyId = comp.DoctorFacilityId 
	BINNEN SLUIT me aan bij DoctorFacility fac OP pv.FacilityId = fac.DoctorFacilityId 
	BINNEN SLUIT me aan bij doc. DoctorFacility OP pv.DoctorId = doc.DoctorFacilityId 
	LINKER BUITEN SLUIT zich aan bij vin Medlists OP pv.FinancialClassMId = fin.MedListsId 
	BINNEN SLUIT me aan bij PatientProfile pp OP pv.PatientProfileId = pp.PatientProfileId
	BINNEN SLUIT me aan bij vt VisitTransactions OP pv.PatientVisitId = vt.PatientVisitid 
	BINNEN SLUIT me aan bij PaymentMethod p.m. OP vt.PaymentMethodId = pm.PaymentMethodId 
	BINNEN SLUIT me aan bij Partij B OP pm.BatchID = b.BatchID 
	BINNEN SLUIT me aan bij Transacties t OP vt.VisitTransactionsId = t.VisitTransactionsId 
	LINKER BUITEN SLUIT aan bij MedLists zich bij OP t.ActionTypeMId = at.MedListsId 
	LINKER BUITEN SLUIT zich aan (selecteer * uit medlists waar tablename = „AdjustmentTypes“) bij adj OP t.ActionTypeMId = adj.MedlistsId 

WAAR 
	t.Action = 'a' EN b.Status <> 0
	EN NIET BESTAAT (SELECTEER 1 VAN PaymentMethod pm1 WAAR vt.PaymentMethodId = pm1.PaymentMethodId EN pm1.InsuranceTransfer = 1)
	EN b.entry >= ISNULL („07/01/2010“, „1/1/1900“) 
	EN B.ENTRY < DATEADD (DAG, 1, ISNULL („07/31/2010“, „1/1/3000“)
	)	
	EN  --Filter op Faciliteit
	(
	(ONGELDIG NIET IS ONGELDIG EN (ONGELDIGE) pv.FacilityID BINNEN) OF
	(ONGELDIG IS ONGELDIG)
	)
	EN  --Filter op Bedrijf
	(
	(ONGELDIG NIET IS ONGELDIG EN (ONGELDIGE) pv.CompanyID BINNEN) OF
	(ONGELDIG IS ONGELDIG)
	)
	EN  --Filter op Financiële Klasse
	(
	(ONGELDIG NIET IS ONGELDIG EN (ONGELDIGE) pv.FinancialClassMID BINNEN) OF
	(ONGELDIG IS ONGELDIG)
	)

GROEP LANGS
	pv.TicketNumber,
	b.Entry,
	t.Amount,
	pv. Bezoek,
	doc. Grootboek,
	fac. Grootboek,
	vin. Grootboek,
	adj. Grootboek
	
HEBBEND
	t.amount <> 0
		
-- Groepeer samen nu de punten voor een totaal

SELECTEER 
	[TicketNumber],
	[Bezoek],
	[EntityCode],
  	[Fiscaal Jaar],
  	[Fiscale Periode],
  	[Subsysteem],
  	[BronCode],
	[DeptSubAccount],
  	[Bedrag],
  	[Debet/Krediet],
  	[Beschrijving],
  	[Identiteitskaart Proj],
	[Vuller] 
      
VAN 
	#Summary 
	
ORDE LANGS 	
	[TicketNumber] 	

#Summary DE LIJST VAN DE DALING

Antwoord : De complexe SQL 2005 Nodig Hulp van de Vraag

Droevig.

Loop eerst, en re-run, UITGEZOCHT en pas het aan gelijke aan wat u nodig hebt -- verwijder kolommen, verander sommige waarden, enz.

Dan kunt u gebruiken dat UITGEZOCHT om de omgekeerde transacties in de #summary lijst op te nemen.

TUSSENVOEGSEL IN #SUMMARY
SELECTEER
      [TicketNumber],
      [Bezoek],
      [EntityCode],
        [Fiscaal Jaar],
        [Fiscale Periode],
        [Subsysteem],
        [BronCode],
        [DeptSubAccount], -- veranderde behoeften?!
        [Bedrag],
    COMPUTER-AIDED SOFTWARE ENGINEERING WANNEER [Debet/Krediet] = het ANDERS „C“ EIND van „C“ TOEN „D“,
        [Beschrijving],
        [Identiteitskaart Proj]
VAN #Summary
Andere oplossingen  
 
programming4us programming4us