-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy path16-SQL-Server-Obter-Datas-Todas-Tabelas.sql
More file actions
91 lines (53 loc) · 29.8 KB
/
16-SQL-Server-Obter-Datas-Todas-Tabelas.sql
File metadata and controls
91 lines (53 loc) · 29.8 KB
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
/* 1. Relacionar todas as colunas das tabelas */
-- Filtrar por tipo de dados e esquema
-- INFORMATION_SCHEMA.COLUMNS, tc.COLUMN_NAME, tc.DATA_TYPE
--esquema, tabela
SELECT tc.TABLE_SCHEMA, tc.TABLE_NAME, tc.COLUMN_NAME, tc.DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS tc -- nome da tabela de colunas do sistema
WHERE tc.DATA_TYPE IN ('datetime') -- Filtrar coluna pelo tipo de datos
/* 2. Criar consulta SQL conforme resultado esperado */
-- Nota: Modelo que será utilizado no resultado final
SELECT
NomeTabela='HumanResources.Department', -- Nome da tabela
NomeColuna='ModifiedDate' , -- Nome da coluna
DTMIN = MIN([ModifiedDate]), -- Valor minímo da coluna
DTMAX = MAX([ModifiedDate]) -- Valor máximo da coluna
FROM [HumanResources].[Department]
FOR XML AUTO -- RAW/AUTO/PATH Retornar resultado em formato XML
/* 3. Definir variável contendo consulta SQL dinamica (A)*/
--Nota: Retornar todos os resultados em formato XML
Declare @QUERY varchar(max) = ''
SELECT @QUERY = @QUERY +
'+(
SELECT
NomeTabela='''+ tc.TABLE_SCHEMA + '.' + tc.TABLE_NAME+''',
NomeColuna='''+ tc.COLUMN_NAME +''' ,
DTMIN = MIN('+quotename(tc.COLUMN_NAME)+'),
DTMAX = MAX('+quotename(tc.COLUMN_NAME)+')
FROM '+ quotename(tc.TABLE_SCHEMA) + '.' + quotename(tc.TABLE_NAME) +'
FOR XML RAW
)'
FROM INFORMATION_SCHEMA.COLUMNS tc
WHERE tc.DATA_TYPE IN ('datetime')
SELECT @QUERY
--Unir as consultas em uma variável de texto (B)
--Variável de texto
Declare @SQL varchar(max) = 'Declare @XML xml = '+RIGHT(@QUERY,LEN(@QUERY)-1)+';'
SELECT @SQL
-- Obter todos os resultados em XML manualmente
Declare @XML xml = ( SELECT NomeTabela='HumanResources.EmployeePayHistory', NomeColuna='RateChangeDate' , DTMIN = MIN([RateChangeDate]), DTMAX = MAX([RateChangeDate]) FROM [HumanResources].[EmployeePayHistory] FOR XML RAW )+( SELECT NomeTabela='HumanResources.EmployeePayHistory', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [HumanResources].[EmployeePayHistory] FOR XML RAW )+( SELECT NomeTabela='dbo.dCalendario', NomeColuna='Data' , DTMIN = MIN([Data]), DTMAX = MAX([Data]) FROM [dbo].[dCalendario] FOR XML RAW )+( SELECT NomeTabela='Sales.SalesOrderHeaderSalesReason', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Sales].[SalesOrderHeaderSalesReason] FOR XML RAW )+( SELECT NomeTabela='Sales.SalesPerson', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Sales].[SalesPerson] FOR XML RAW )+( SELECT NomeTabela='Production.Illustration', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[Illustration] FOR XML RAW )+( SELECT NomeTabela='HumanResources.JobCandidate', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [HumanResources].[JobCandidate] FOR XML RAW )+( SELECT NomeTabela='Production.Location', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[Location] FOR XML RAW )+( SELECT NomeTabela='Person.Password', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Person].[Password] FOR XML RAW )+( SELECT NomeTabela='Sales.SalesPersonQuotaHistory', NomeColuna='QuotaDate' , DTMIN = MIN([QuotaDate]), DTMAX = MAX([QuotaDate]) FROM [Sales].[SalesPersonQuotaHistory] FOR XML RAW )+( SELECT NomeTabela='Sales.SalesPersonQuotaHistory', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Sales].[SalesPersonQuotaHistory] FOR XML RAW )+( SELECT NomeTabela='Person.Person', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Person].[Person] FOR XML RAW )+( SELECT NomeTabela='Sales.SalesReason', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Sales].[SalesReason] FOR XML RAW )+( SELECT NomeTabela='Sales.SalesTaxRate', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Sales].[SalesTaxRate] FOR XML RAW )+( SELECT NomeTabela='Sales.PersonCreditCard', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Sales].[PersonCreditCard] FOR XML RAW )+( SELECT NomeTabela='Person.vAdditionalContactInfo', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Person].[vAdditionalContactInfo] FOR XML RAW )+( SELECT NomeTabela='Person.PersonPhone', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Person].[PersonPhone] FOR XML RAW )+( SELECT NomeTabela='Sales.SalesTerritory', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Sales].[SalesTerritory] FOR XML RAW )+( SELECT NomeTabela='Person.PhoneNumberType', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Person].[PhoneNumberType] FOR XML RAW )+( SELECT NomeTabela='Production.Product', NomeColuna='SellStartDate' , DTMIN = MIN([SellStartDate]), DTMAX = MAX([SellStartDate]) FROM [Production].[Product] FOR XML RAW )+( SELECT NomeTabela='Production.Product', NomeColuna='SellEndDate' , DTMIN = MIN([SellEndDate]), DTMAX = MAX([SellEndDate]) FROM [Production].[Product] FOR XML RAW )+( SELECT NomeTabela='Production.Product', NomeColuna='DiscontinuedDate' , DTMIN = MIN([DiscontinuedDate]), DTMAX = MAX([DiscontinuedDate]) FROM [Production].[Product] FOR XML RAW )+( SELECT NomeTabela='Production.Product', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[Product] FOR XML RAW )+( SELECT NomeTabela='Sales.vPersonDemographics', NomeColuna='DateFirstPurchase' , DTMIN = MIN([DateFirstPurchase]), DTMAX = MAX([DateFirstPurchase]) FROM [Sales].[vPersonDemographics] FOR XML RAW )+( SELECT NomeTabela='Sales.vPersonDemographics', NomeColuna='BirthDate' , DTMIN = MIN([BirthDate]), DTMAX = MAX([BirthDate]) FROM [Sales].[vPersonDemographics] FOR XML RAW )+( SELECT NomeTabela='HumanResources.vJobCandidate', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [HumanResources].[vJobCandidate] FOR XML RAW )+( SELECT NomeTabela='HumanResources.vJobCandidateEmployment', NomeColuna='Emp.StartDate' , DTMIN = MIN([Emp.StartDate]), DTMAX = MAX([Emp.StartDate]) FROM [HumanResources].[vJobCandidateEmployment] FOR XML RAW )+( SELECT NomeTabela='HumanResources.vJobCandidateEmployment', NomeColuna='Emp.EndDate' , DTMIN = MIN([Emp.EndDate]), DTMAX = MAX([Emp.EndDate]) FROM [HumanResources].[vJobCandidateEmployment] FOR XML RAW )+( SELECT NomeTabela='HumanResources.vJobCandidateEducation', NomeColuna='Edu.StartDate' , DTMIN = MIN([Edu.StartDate]), DTMAX = MAX([Edu.StartDate]) FROM [HumanResources].[vJobCandidateEducation] FOR XML RAW )+( SELECT NomeTabela='HumanResources.vJobCandidateEducation', NomeColuna='Edu.EndDate' , DTMIN = MIN([Edu.EndDate]), DTMAX = MAX([Edu.EndDate]) FROM [HumanResources].[vJobCandidateEducation] FOR XML RAW )+( SELECT NomeTabela='Production.vProductModelCatalogDescription', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[vProductModelCatalogDescription] FOR XML RAW )+( SELECT NomeTabela='Production.vProductModelInstructions', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[vProductModelInstructions] FOR XML RAW )+( SELECT NomeTabela='Sales.SalesTerritoryHistory', NomeColuna='StartDate' , DTMIN = MIN([StartDate]), DTMAX = MAX([StartDate]) FROM [Sales].[SalesTerritoryHistory] FOR XML RAW )+( SELECT NomeTabela='Sales.SalesTerritoryHistory', NomeColuna='EndDate' , DTMIN = MIN([EndDate]), DTMAX = MAX([EndDate]) FROM [Sales].[SalesTerritoryHistory] FOR XML RAW )+( SELECT NomeTabela='Sales.SalesTerritoryHistory', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Sales].[SalesTerritoryHistory] FOR XML RAW )+( SELECT NomeTabela='Production.ScrapReason', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[ScrapReason] FOR XML RAW )+( SELECT NomeTabela='HumanResources.Shift', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [HumanResources].[Shift] FOR XML RAW )+( SELECT NomeTabela='Production.ProductCategory', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[ProductCategory] FOR XML RAW )+( SELECT NomeTabela='Purchasing.ShipMethod', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Purchasing].[ShipMethod] FOR XML RAW )+( SELECT NomeTabela='Production.ProductCostHistory', NomeColuna='StartDate' , DTMIN = MIN([StartDate]), DTMAX = MAX([StartDate]) FROM [Production].[ProductCostHistory] FOR XML RAW )+( SELECT NomeTabela='Production.ProductCostHistory', NomeColuna='EndDate' , DTMIN = MIN([EndDate]), DTMAX = MAX([EndDate]) FROM [Production].[ProductCostHistory] FOR XML RAW )+( SELECT NomeTabela='Production.ProductCostHistory', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[ProductCostHistory] FOR XML RAW )+( SELECT NomeTabela='Production.ProductDescription', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[ProductDescription] FOR XML RAW )+( SELECT NomeTabela='Sales.ShoppingCartItem', NomeColuna='DateCreated' , DTMIN = MIN([DateCreated]), DTMAX = MAX([DateCreated]) FROM [Sales].[ShoppingCartItem] FOR XML RAW )+( SELECT NomeTabela='Sales.ShoppingCartItem', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Sales].[ShoppingCartItem] FOR XML RAW )+( SELECT NomeTabela='Production.ProductDocument', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[ProductDocument] FOR XML RAW )+( SELECT NomeTabela='dbo.DatabaseLog', NomeColuna='PostTime' , DTMIN = MIN([PostTime]), DTMAX = MAX([PostTime]) FROM [dbo].[DatabaseLog] FOR XML RAW )+( SELECT NomeTabela='Production.ProductInventory', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[ProductInventory] FOR XML RAW )+( SELECT NomeTabela='Sales.SpecialOffer', NomeColuna='StartDate' , DTMIN = MIN([StartDate]), DTMAX = MAX([StartDate]) FROM [Sales].[SpecialOffer] FOR XML RAW )+( SELECT NomeTabela='Sales.SpecialOffer', NomeColuna='EndDate' , DTMIN = MIN([EndDate]), DTMAX = MAX([EndDate]) FROM [Sales].[SpecialOffer] FOR XML RAW )+( SELECT NomeTabela='Sales.SpecialOffer', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Sales].[SpecialOffer] FOR XML RAW )+( SELECT NomeTabela='dbo.ErrorLog', NomeColuna='ErrorTime' , DTMIN = MIN([ErrorTime]), DTMAX = MAX([ErrorTime]) FROM [dbo].[ErrorLog] FOR XML RAW )+( SELECT NomeTabela='Production.ProductListPriceHistory', NomeColuna='StartDate' , DTMIN = MIN([StartDate]), DTMAX = MAX([StartDate]) FROM [Production].[ProductListPriceHistory] FOR XML RAW )+( SELECT NomeTabela='Production.ProductListPriceHistory', NomeColuna='EndDate' , DTMIN = MIN([EndDate]), DTMAX = MAX([EndDate]) FROM [Production].[ProductListPriceHistory] FOR XML RAW )+( SELECT NomeTabela='Production.ProductListPriceHistory', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[ProductListPriceHistory] FOR XML RAW )+( SELECT NomeTabela='Person.Address', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Person].[Address] FOR XML RAW )+( SELECT NomeTabela='Sales.SpecialOfferProduct', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Sales].[SpecialOfferProduct] FOR XML RAW )+( SELECT NomeTabela='Production.ProductModel', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[ProductModel] FOR XML RAW )+( SELECT NomeTabela='Person.AddressType', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Person].[AddressType] FOR XML RAW )+( SELECT NomeTabela='Person.StateProvince', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Person].[StateProvince] FOR XML RAW )+( SELECT NomeTabela='Production.ProductModelIllustration', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[ProductModelIllustration] FOR XML RAW )+( SELECT NomeTabela='dbo.AWBuildVersion', NomeColuna='VersionDate' , DTMIN = MIN([VersionDate]), DTMAX = MAX([VersionDate]) FROM [dbo].[AWBuildVersion] FOR XML RAW )+( SELECT NomeTabela='dbo.AWBuildVersion', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [dbo].[AWBuildVersion] FOR XML RAW )+( SELECT NomeTabela='Production.ProductModelProductDescriptionCulture', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[ProductModelProductDescriptionCulture] FOR XML RAW )+( SELECT NomeTabela='Production.BillOfMaterials', NomeColuna='StartDate' , DTMIN = MIN([StartDate]), DTMAX = MAX([StartDate]) FROM [Production].[BillOfMaterials] FOR XML RAW )+( SELECT NomeTabela='Production.BillOfMaterials', NomeColuna='EndDate' , DTMIN = MIN([EndDate]), DTMAX = MAX([EndDate]) FROM [Production].[BillOfMaterials] FOR XML RAW )+( SELECT NomeTabela='Production.BillOfMaterials', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[BillOfMaterials] FOR XML RAW )+( SELECT NomeTabela='Sales.Store', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Sales].[Store] FOR XML RAW )+( SELECT NomeTabela='Production.ProductPhoto', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[ProductPhoto] FOR XML RAW )+( SELECT NomeTabela='Production.ProductProductPhoto', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[ProductProductPhoto] FOR XML RAW )+( SELECT NomeTabela='Production.TransactionHistory', NomeColuna='TransactionDate' , DTMIN = MIN([TransactionDate]), DTMAX = MAX([TransactionDate]) FROM [Production].[TransactionHistory] FOR XML RAW )+( SELECT NomeTabela='Production.TransactionHistory', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[TransactionHistory] FOR XML RAW )+( SELECT NomeTabela='Production.ProductReview', NomeColuna='ReviewDate' , DTMIN = MIN([ReviewDate]), DTMAX = MAX([ReviewDate]) FROM [Production].[ProductReview] FOR XML RAW )+( SELECT NomeTabela='Production.ProductReview', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[ProductReview] FOR XML RAW )+( SELECT NomeTabela='Person.BusinessEntity', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Person].[BusinessEntity] FOR XML RAW )+( SELECT NomeTabela='Production.TransactionHistoryArchive', NomeColuna='TransactionDate' , DTMIN = MIN([TransactionDate]), DTMAX = MAX([TransactionDate]) FROM [Production].[TransactionHistoryArchive] FOR XML RAW )+( SELECT NomeTabela='Production.TransactionHistoryArchive', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[TransactionHistoryArchive] FOR XML RAW )+( SELECT NomeTabela='Production.ProductSubcategory', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[ProductSubcategory] FOR XML RAW )+( SELECT NomeTabela='Person.BusinessEntityAddress', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Person].[BusinessEntityAddress] FOR XML RAW )+( SELECT NomeTabela='Purchasing.ProductVendor', NomeColuna='LastReceiptDate' , DTMIN = MIN([LastReceiptDate]), DTMAX = MAX([LastReceiptDate]) FROM [Purchasing].[ProductVendor] FOR XML RAW )+( SELECT NomeTabela='Purchasing.ProductVendor', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Purchasing].[ProductVendor] FOR XML RAW )+( SELECT NomeTabela='Person.BusinessEntityContact', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Person].[BusinessEntityContact] FOR XML RAW )+( SELECT NomeTabela='Production.UnitMeasure', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[UnitMeasure] FOR XML RAW )+( SELECT NomeTabela='Purchasing.Vendor', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Purchasing].[Vendor] FOR XML RAW )+( SELECT NomeTabela='Person.ContactType', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Person].[ContactType] FOR XML RAW )+( SELECT NomeTabela='Sales.CountryRegionCurrency', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Sales].[CountryRegionCurrency] FOR XML RAW )+( SELECT NomeTabela='Person.CountryRegion', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Person].[CountryRegion] FOR XML RAW )+( SELECT NomeTabela='Production.WorkOrder', NomeColuna='StartDate' , DTMIN = MIN([StartDate]), DTMAX = MAX([StartDate]) FROM [Production].[WorkOrder] FOR XML RAW )+( SELECT NomeTabela='Production.WorkOrder', NomeColuna='EndDate' , DTMIN = MIN([EndDate]), DTMAX = MAX([EndDate]) FROM [Production].[WorkOrder] FOR XML RAW )+( SELECT NomeTabela='Production.WorkOrder', NomeColuna='DueDate' , DTMIN = MIN([DueDate]), DTMAX = MAX([DueDate]) FROM [Production].[WorkOrder] FOR XML RAW )+( SELECT NomeTabela='Production.WorkOrder', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[WorkOrder] FOR XML RAW )+( SELECT NomeTabela='Purchasing.PurchaseOrderDetail', NomeColuna='DueDate' , DTMIN = MIN([DueDate]), DTMAX = MAX([DueDate]) FROM [Purchasing].[PurchaseOrderDetail] FOR XML RAW )+( SELECT NomeTabela='Purchasing.PurchaseOrderDetail', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Purchasing].[PurchaseOrderDetail] FOR XML RAW )+( SELECT NomeTabela='Sales.CreditCard', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Sales].[CreditCard] FOR XML RAW )+( SELECT NomeTabela='Production.Culture', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[Culture] FOR XML RAW )+( SELECT NomeTabela='Production.WorkOrderRouting', NomeColuna='ScheduledStartDate' , DTMIN = MIN([ScheduledStartDate]), DTMAX = MAX([ScheduledStartDate]) FROM [Production].[WorkOrderRouting] FOR XML RAW )+( SELECT NomeTabela='Production.WorkOrderRouting', NomeColuna='ScheduledEndDate' , DTMIN = MIN([ScheduledEndDate]), DTMAX = MAX([ScheduledEndDate]) FROM [Production].[WorkOrderRouting] FOR XML RAW )+( SELECT NomeTabela='Production.WorkOrderRouting', NomeColuna='ActualStartDate' , DTMIN = MIN([ActualStartDate]), DTMAX = MAX([ActualStartDate]) FROM [Production].[WorkOrderRouting] FOR XML RAW )+( SELECT NomeTabela='Production.WorkOrderRouting', NomeColuna='ActualEndDate' , DTMIN = MIN([ActualEndDate]), DTMAX = MAX([ActualEndDate]) FROM [Production].[WorkOrderRouting] FOR XML RAW )+( SELECT NomeTabela='Production.WorkOrderRouting', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[WorkOrderRouting] FOR XML RAW )+( SELECT NomeTabela='Sales.Currency', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Sales].[Currency] FOR XML RAW )+( SELECT NomeTabela='Purchasing.PurchaseOrderHeader', NomeColuna='OrderDate' , DTMIN = MIN([OrderDate]), DTMAX = MAX([OrderDate]) FROM [Purchasing].[PurchaseOrderHeader] FOR XML RAW )+( SELECT NomeTabela='Purchasing.PurchaseOrderHeader', NomeColuna='ShipDate' , DTMIN = MIN([ShipDate]), DTMAX = MAX([ShipDate]) FROM [Purchasing].[PurchaseOrderHeader] FOR XML RAW )+( SELECT NomeTabela='Purchasing.PurchaseOrderHeader', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Purchasing].[PurchaseOrderHeader] FOR XML RAW )+( SELECT NomeTabela='Sales.CurrencyRate', NomeColuna='CurrencyRateDate' , DTMIN = MIN([CurrencyRateDate]), DTMAX = MAX([CurrencyRateDate]) FROM [Sales].[CurrencyRate] FOR XML RAW )+( SELECT NomeTabela='Sales.CurrencyRate', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Sales].[CurrencyRate] FOR XML RAW )+( SELECT NomeTabela='Sales.Customer', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Sales].[Customer] FOR XML RAW )+( SELECT NomeTabela='HumanResources.Department', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [HumanResources].[Department] FOR XML RAW )+( SELECT NomeTabela='Production.Document', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Production].[Document] FOR XML RAW )+( SELECT NomeTabela='Sales.SalesOrderDetail', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Sales].[SalesOrderDetail] FOR XML RAW )+( SELECT NomeTabela='Person.EmailAddress', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Person].[EmailAddress] FOR XML RAW )+( SELECT NomeTabela='HumanResources.Employee', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [HumanResources].[Employee] FOR XML RAW )+( SELECT NomeTabela='Sales.SalesOrderHeader', NomeColuna='OrderDate' , DTMIN = MIN([OrderDate]), DTMAX = MAX([OrderDate]) FROM [Sales].[SalesOrderHeader] FOR XML RAW )+( SELECT NomeTabela='Sales.SalesOrderHeader', NomeColuna='DueDate' , DTMIN = MIN([DueDate]), DTMAX = MAX([DueDate]) FROM [Sales].[SalesOrderHeader] FOR XML RAW )+( SELECT NomeTabela='Sales.SalesOrderHeader', NomeColuna='ShipDate' , DTMIN = MIN([ShipDate]), DTMAX = MAX([ShipDate]) FROM [Sales].[SalesOrderHeader] FOR XML RAW )+( SELECT NomeTabela='Sales.SalesOrderHeader', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [Sales].[SalesOrderHeader] FOR XML RAW )+( SELECT NomeTabela='HumanResources.EmployeeDepartmentHistory', NomeColuna='ModifiedDate' , DTMIN = MIN([ModifiedDate]), DTMAX = MAX([ModifiedDate]) FROM [HumanResources].[EmployeeDepartmentHistory] FOR XML RAW );
SELECT @XML
/* 5. Manipular o conteúdo XML (C) */
-- @XML.nodes('/row'), '@NomeTabela','varchar(100)'
SELECT DISTINCT
NomeTabela = row.value('@NomeTabela','varchar(100)'),
NomeColuna = row.value('@NomeColuna','varchar(100)'),
DTMIN = row.value('@DTMIN','datetime'), --Converter tipo de dados
DTMAX = row.value('@DTMAX','datetime')
FROM @XML.nodes('/row') as A(row)
/* 6. Desenvolver e executar a consulta dinâmica */
-- Combinar consultas (A), (B) e (C), Exec()
/* 7. Obter a Data Inicial e Final de todas as tabelas */
SELECT MIN([DTMIN]) AS DTMIN
,MAX([DTMAX]) AS DTMAX
FROM [AdventureWorks2017].[dbo].[dTabelaDatas]