ad. 1 Nie do końca, musisz wygenerować schemat i dodać do kolekcji schematów, czyli tak (xsd wygenerowane automatem, nie sprawdzałem poprawności):
CREATE XML SCHEMA COLLECTION sch AS
N'<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="StatystykaWizyt">
<xs:complexType>
<xs:sequence>
<xs:element name="pacjent" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="wizyta" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:byte">
<xs:attribute type="xs:string" name="specjalnosc" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="imie" use="optional"/>
<xs:attribute type="xs:string" name="nazwisko" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:date" name="od"/>
<xs:attribute type="xs:date" name="do"/>
</xs:complexType>
</xs:element>
</xs:schema>' ;
GO
ad.2
Nie do końca oprócz typu xml w nawiasach wpisujesz schemat z kolekcji z pkt.1, wtedy baza wie jak ma pilnować danych
CREATE TABLE terminyXML (
doc XML (sch)
, od Date
, do Date
)
GO
Do pkt 1 i2 zapoznaj się z tym: https://msdn.microsoft.com/pl-pl/library/ms176009(v=sql.110).aspx
ad. 3
No tu klasyczny insert
DECLARE @od DATE
DECLARE @do DATE
SET @od = '2016-11-05'
SET @do = '2016-11-30'
insert into terminyXML Values (
(SELECT
@od AS '@od'
,@do AS '@do'
,(SELECT
imie AS '@imie'
,nazwisko AS '@nazwisko'
,(SELECT
specjalnosc AS 'wizyta/@specjalnosc'
,liczba AS 'wizyta'
FROM
spec
WHERE
idpacjenta = pacjenci.id
FOR xml path(''), TYPE)
FROM
pacjenci
FOR xml path('pacjent'), TYPE)
FOR xml path('StatystykaWizyt'), TYPE)
, @od
, @do)
Tu musisz zwrócić uwagę, że dopisałem dyrektywę TYPE na końcu podzapytania. Szczegóły tutaj: https://msdn.microsoft.com/en-us/library/ms190025.aspx
ad. 4
Tu jest trochę zabawy, ale nie napisze tego z głowy, a teraz nie mam dostepu do sql-a w tej chwili, warto zacząć tutaj:
https://technet.microsoft.com/en-us/library/ms190798.aspx
Jak sobie nie poradzisz to daj znać