SQLServer开发问题前十名[5]
为行选择创建脚本。
问题提交于2005年12月15日。
想象一下这张表:
prod _ keyitem _ key pack _ key last _ sale
lm 001 1029 ad 100 2004/12/05
lm 870 1029 ad 100 2005/09/20
PE 788。
当item_key和pack_key相等时,我希望选择日期较大的行。换句话说,我要:
LM 870 1029 AD 100 2005/09/20
PE 312 1030 BC 400 2004/08/07
你能帮我写这个剧本吗?
专家回答:
这个表有主键吗?在这种情况下,查询可能会更容易。反正我觉得你应该遵循以下:
select prod _ key,item _ key,pack _ key,last _ sale
FROM(select item _ key,pack _ key,MAX(last _ sale)AS last _ sale FROM tablex GROUP BY item _ key,pack_key) AS MaxDateTable
其中tablex . item _ key = MAX date table . item _ key
AND tablex . pack _ key = MAX date table . pack _ key
AND tablex . last _ sale
列出没有记录的数据库表。
问题提交于2006年5月16日。
我创建了一个动态SQL Server查询来输出表中的行数。我的目标是列出数据库中没有记录的表。查询如下:
declare @ strsqlvarchar(100)
declare @ tablename varchar(50)
@ tablename = ' table 123 ' @ strsql = ' select count(*)from '+@ tablename exec(@ strsql
我得到了输出,但是我不能将这个值存储在一个变量中以备将来引用。
我想这样检查一下:
/* @ count variable = 0
print(@ tablename)*/
还有其他解决方法吗?
专家回答:
通过从sysobjects表中获取表名,可以使您的解决方案更加灵活:
declare @ strsqlvarchar(256)
create Table # empty tables(TableName varchar(128),Table _ RowCount int)select @ strsql = ' select distinct o . name as TableName,x . rowcont as Table _ RowCount
from sysobjects o
inner join sysindexes x
on o . id = x . id
0条评论