从sql查询中删除一些记录
我从不同的表中编写了以下查询:从sql查询中删除一些记录,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我从不同的表中编写了以下查询: SELECT DISTINCT 0 AS IID, pd.IID AS PurchaseOrerDetailsId, i.[Description] AS ITEM, '' AS BatchNo, s.[Description] AS Unit, '' AS MfgDt, 0 AS QtyReceived, '' AS ExpiryDate,
SELECT DISTINCT 0 AS IID,
pd.IID AS PurchaseOrerDetailsId,
i.[Description] AS ITEM,
'' AS BatchNo,
s.[Description] AS Unit,
'' AS MfgDt,
0 AS QtyReceived,
'' AS ExpiryDate,
'' AS PackSize,
0 AS QtyOrdered,
0 AS MRP,
0 AS PTR,
0 AS PTS,
0 AS PurchaseRate,
0 AS CGST,
0 AS SGST,
0 AS IGST,
0 AS DiscPer,
0 AS DiscVal,
0 AS PurchaseValue,
0 AS CGSTAmt,
0 AS SGSTAmt,
i.IID AS ItemId
FROM PurchaseOrderDetails pd
LEFT JOIN StockDetails sd ON pd.ItemId = sd.ItemId
INNER JOIN Items i ON i.IID = pd.ItemId
INNER JOIN Strings s ON s.IID = i.Unit
WHERE pd.PurchaseOrderId = 1
我得到以下结果:
现在我想消除前两条记录(PurchaseOrderDetailSID为1和2)。
任何线索
谢谢
Partha您可以在CTE中使用行号()作为[rn],然后您可以选择[rn]>2。我怀疑还有更多。但根据您提供的信息:
and pd.IID > 2
您不使用StockDetails sd
。左路连接是一种浪费
问题不需要所有这些硬编码的值。将“WHERE pd.PurchaseOrderId=1”更改为“WHERE pd.PurchaseOrderId=1和PurchaseOrderDetailsID>2”在您的
WHERE
中添加一个not IN
子句,也许吧?这看起来有点过分了