在SQL中循环
下面的查询,我得到的项目,itemid,类别,数量,quantityadded,quantity total和它们可以是相同的项目在不同的位置在SQL中循环,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,下面的查询,我得到的项目,itemid,类别,数量,quantityadded,quantity total和它们可以是相同的项目在不同的位置 SELECT it.itemno, it.item, c.category, q.owned, q.added, (q.owned + q.added) AS total, (q.owned * it.cost) AS Tcost FROM item it INNER JOIN phiq q
SELECT
it.itemno,
it.item,
c.category,
q.owned,
q.added,
(q.owned + q.added) AS total,
(q.owned * it.cost) AS Tcost
FROM item it
INNER JOIN phiq q ON it.itemlid = q.itemlid
INNER JOIN category c ON c.catid = it.catid
WHERE q.locationid = '12653'
AND q.qdate LIKE '%2013%'
由于将有三个不同的地点,我需要在不同的地点运行此查询3次。还有几年,这是2013年,但我应该能够在2012年运行此查询,以便再次比较3个地点,然后针对每个项目,我需要每个地点的总计,例如:
ITEMID项目类别Loc1owned LOC1 ADDED LOC1总计loc2owned LOC2总计loc3owned LOC3总计(loc1toal+LOC2TOAL+loc3total)
因为之前的loc都是2013年的loc,所以我会有相同的LOC1所有权,LOC1总计,LOC2所有权。。。。。2012年也是如此,每个项目都是一行,以此类推
我的问题是如何在SQL中实现这一点。是否有一个循环…迭代…我对此相当陌生,因此非常感谢您的帮助 您可以尝试:
SELECT q.locationid, it.itemno,it.item,c.category,q.owned
,q.added,(q.owned+q.added) as total, (q.owned*it.cost) as Tcost
FROM item it
INNER JOIN phiq q on it.itemlid= q.itemlid
INNER JOIN category c on c.catid=it.catid
WHERE q.locationid IN ('12653', 'anotherlocation', 'nextlocation')
AND (q.qdate LIKE '%2013%')
GROUP BY q.locationid, it.itemno,it.item,c.category,q.owned,q.added
,(q.owned+q.added), (q.owned*it.cost)
除非我知道这一年的数据类型(和内容),否则我无法计算这一年的数据。能否附上一些查询所用表格的屏幕截图?你希望达到的结果是什么?这将有助于更有效地回答您的问题。看起来您正在将日期存储在字符串列中。这是一个很大的禁忌。请改用Date、DateTime或DateTime2类型。