我有一个记录表,记录表中的更改。我可以从第一个表中提取数据,但是当我尝试加入另一个表来添加一些列信息时,它会停止显示信息。
PartNumber | PartDesc | value | date
1 | test | 1 | 3/4/2015
我想在位置表
中加入Aisle标签PartNumber| AisleTag | AisleTagTwo
1 | A1 | N/A
这是我到目前为止的sql语句
Select t1.PartNumber, t1.PartDesc , t1.NewValue , t1.Date,t2.AisleTag,t2.AisleTagTwo
from InvRecord t1
JOIN PartAisleListTbl t2 ON t1.PartNumber = t2.PartNumber
where Date = (select max(Date) from InvRecord where t1.PartNumber = InvRecord.PartNumber)
order by t1.PartNumber
它是空白的,我原来的sql语句不包括t2中的任何内容。我不确定在获取数据方面采用什么方法任何帮助都非常感谢谢谢!
这应该是最终结果
PartNumber | PartDesc | value | date | AisleTag | AisleTagTwo
1 | test | 1 | 3/4/2015 | A1 | N/A
答案 0 :(得分:1)
不确定为什么你的工作不起作用...... t1和t2的任何机会都是?
如果它有所作为,那么使用内联视图而不是相关查询奇迹就可以了。
Select t1.PartNumber, t1.PartDesc , t1.NewValue , t1.Date,t2.AisleTag,t2.AisleTagTwo
from InvRecord t1
JOIN PartAisleListTbl t2
ON t1.PartNumber = t2.PartNumber
JOIN (select max(Date) mdate, PartNumber from InvRecord GROUP BY PartNumber) t3
on t3.partNumber= T1.PartNumber
and T3.mdate = T1.Date
order by t1.PartNumber
答案 1 :(得分:1)
您是否根本没有返回任何记录,或只返回AisleTag
和AisleTagTwo
为空的记录?
你的句子"它是空白的,我的原始sql语句不包括t2中的任何内容。"听起来好像你正在为t2
字段获取带空值的记录。
如果您是,那么您可能在t2
中有一条记录,其中包含这些字段的空值。
出于疑难解答的目的,请尝试运行不带WHERE
子句的查询:
Select t1.PartNumber, t1.PartDesc , t1.NewValue , t1.Date,t2.AisleTag,t2.AisleTagTwo
from InvRecord t1
JOIN PartAisleListTbl t2 ON t1.PartNumber = t2.PartNumber
order by t1.PartNumber
如果您确实获得了记录,那么您的问题就在于WHERE
子句。如果您不这样做,则问题在于PartNumber
中的InvRecord
字段与PartAisleListTbl
不匹配。
答案 2 :(得分:1)
拉出表A中每个PartNumber的最新行(基于Date)并附加表B中的数据(在PartNumber上加入):
SELECT *
FROM (
SELECT A.PartNumber
, A.PartDesc
, A.NewValue
, A.Date
, B.AisleTag
, B.AisleTagTwo
, DateSeq = ROW_NUMBER() OVER(PARTITION BY A.PartNumber ORDER BY A.Date DESC)
FROM InvRecord A
LEFT JOIN PartAisleListTbl B
ON A.PartNumber = B.PartNumber
) A
WHERE A.DateSeq = 1
ORDER BY A.PartNumber