我的目标是根据表Product_A和Product_B中的类似列检索列名称的结果。
如果我从sql server获得excel,notepad或table中的结果并不重要。最重要的是检索结果。
我不知道如何根据手动工作使用率低的计算检索结果?
您需要考虑的一些标准:
该表位于SQL Server 2008 R2
中TABLE Product_A
(
ProductID INT,
ProductName VARCHAR(100),
Rate MONEY,
Action INT,
MapINT,
)
TABLE Product_B
(
ProductID INT,
Count INT,
ProductName VARCHAR(100),
Rate MONEY
)
Requested result
ProductID INT,
ProductName VARCHAR(100),
Rate MONEY,
答案 0 :(得分:1)
此查询将比较两个表并仅返回相同数据类型的同名列。如果您需要查找数据库中的所有匹配项,请注释掉t1.name =
条件。
select
t1.name TableName,
c1.name ColumnName,
types.name,
c1.max_length,
c1.precision,
c1.scale
from sys.columns c1
inner join sys.columns c2
-- Condition to join columns - same name, type, length, precision and scale
on c1.name = c2.name
and c1.system_type_id = c2.system_type_id
and c1.max_length = c2.max_length
and c1.precision = c2.precision
and c1.scale = c2.scale
-- Exclude template table
and c1.object_id <> c2.object_id
inner join sys.tables t1
on c1.object_id = t1.object_id
inner join sys.types
on c1.system_type_id = types.system_type_id
inner join sys.tables t2
on c2.object_id = t2.object_id
where t2.name = 'Product_B'
-- remove if you want to search for matches in all tables
and t1.name = 'Product_A'
查看sys.columns和sys.tables上的文档。
答案 1 :(得分:0)
您的要求不是很清楚,但您可能指的是UNION,因此您可以从两个表中获取数据,这些数据将以不同的行为您提供每个表中的产品信息:
SELECT ProductId, ProductName, Rate
FROM Product_A
UNION
SELECT ProductId, ProductName, Rate
FROM Product_B
如果您可以编辑OP并发布一些示例数据和预期结果,那么可以澄清查询。
如果您知道哪个表需要表A或B中的数据,那么您可以在ProductName上进行JOIN,但是您需要确定所需的速率和产品ID:
SELECT a.ProductId
, a.ProductName
, a.Rate
FROM Product_A a
JOIN Product_B b
ON a.ProductName = b.ProductName