Sql server 2008 在处理后从select中删除行
我必须要一张这样的桌子Sql server 2008 在处理后从select中删除行,sql-server-2008,Sql Server 2008,我必须要一张这样的桌子 Year Month 2012 8 2012 7 2012 4 2012 3 2011 7 2011 3 2011 1 2010 10 2010 9 2010 8 这张表显示了哪一个月和哪一年还押,现在假设我已经完成了2012年,7个月。现在我想要一个类似的列表 Year Month 2012 8 2012 4 2012 3 2011 7 2011 3 2011 1 2010 10
Year Month
2012 8
2012 7
2012 4
2012 3
2011 7
2011 3
2011 1
2010 10
2010 9
2010 8
这张表显示了哪一个月和哪一年还押,现在假设我已经完成了2012年,7个月。现在我想要一个类似的列表
Year Month
2012 8
2012 4
2012 3
2011 7
2011 3
2011 1
2010 10
2010 9
2010 8
我正在使用下面的查询,但这并没有给我正确的记录
SELECT YEAR, MONTH from tablex
WHERE Year NOT IN (SELECT DISTINCT YEAR from OTHER_TABLE INNER JOIN Some_Other_Table)
AND MONTH NOT IN (SELECT DISTINCT MONTH FROM OTHER_TABLE INNER JOIN Some_Other_Table)
当其他_表为空时,我会得到当前计数,但当其他表有2012年和第7个月时,我不会得到任何结果
注意:对于tablex和OTHER_表以及Som_OTHER_表,没有连接列可用您只需使用:
您只需使用:
这个答案假设您在其他_表中有一行{Year=2012,Month=7}来指定完成的月份 这不起作用,因为您要分别检查年份和月份。因此,您没有从结果中删除第2012、7行,而是删除了年=2012的所有行和月=7的所有行。请改为尝试此反加入:
SELECT x.YEAR, x.MONTH
FROM tablex x
LEFT OUTER JOIN OTHER_TABLE y ON x.YEAR = y.YEAR AND x.MONTH = y.MONTH
WHERE y.YEAR IS NULL
这个答案假设您在其他_表中有一行{Year=2012,Month=7}来指定完成的月份 这不起作用,因为您要分别检查年份和月份。因此,您没有从结果中删除第2012、7行,而是删除了年=2012的所有行和月=7的所有行。请改为尝试此反加入:
SELECT x.YEAR, x.MONTH
FROM tablex x
LEFT OUTER JOIN OTHER_TABLE y ON x.YEAR = y.YEAR AND x.MONTH = y.MONTH
WHERE y.YEAR IS NULL
你是没有结果还是结果太少?您在其他_表中有哪些行?是否没有结果或结果太少?在其他表中有哪些行?是否有其他方法,因为我已经有了这样的结构:从主表中选择,其中Col1从表A中选择内部联接表B,Col2从表A中选择内部联接表B,其中主表与表A和表A没有联接条件TableB@Zerotoinfinite我不确定我是否完全明白。你能发布所有相关的表格结构和一些样本数据吗,除了这个查询,还有其他方法吗?因为我已经有了这样的结构:SELECT FROM MAIN TABLE,其中Col1 SELECT FROM TABLEA INTERNAL JOIN TABLEB和Col2SELECT FROM TABLEA INTERNAL JOIN TABLEB,其中MAINTTABLE与TABLEA和TABLE没有连接条件TableB@Zerotoinfinite我不确定我是否完全明白。您能否发布所有相关的表结构和一些示例数据,以及此查询?