我希望有人可以帮助解决一个问题,我无法将有限的知识包裹起来。我有两个SQL查询:ASP.net中的SQL交叉表计算
SELECT
SUM(Matrix.[ITEM1]) AS [ITEM1],
SUM(Matrix.[ITEM2]) AS [ITEM2]
FROM StoreList
INNER JOIN Matrix ON StoreList.[Store Number] = Matrix.[Store Number]
WHERE (StoreList.Region = '@Value')
SELECT
ITEMTYPES.type_description,
ITEMS.Quantity
FROM ITEMS
INNER JOIN ITEMTYPES ON ITEMS.type_id = ITEMTYPES.id
现在,这些做的是恢复我想乘在一起值的列表(例如,获得由[ITEM1],乘以[ITEM1]最后的量[Items.Quantity]。然而,ITEMTYPES表包含用于输入新项目的ITEM(和主键id)的描述列表。STORELIST表使用ITEMTYPES中的描述符作为列名称(即。ItemTypes表具有记录称为[Item1],[Item2]; Matrix中的列名称也是[Item1],[Item2])
问题是这样的 - 从我有限的经验(我的意思是限制 - < 6个月SQL )没有办法执行校准基于列名称的计算 - 我必须以某种方式将总计抽象到另一个表中,并为Region添加额外的字段(这解释了查询1中的sum()语句),并按照这种方式执行计算 - 或者其中一些具有更多优雅的想法?
表的结构按照劳伦斯的要求:
For Table [MATRIX]:
[Store Number] (PK, int, not null)
[ITEM1] (int, default 0)
[ITEM2] (int, default 0)
For Table [ITEMTYPES]:
[id] (PK, int, not null),
[ITEMTYPE] (nvarchar(50), not null)
现在,示例数据(请原谅任何格式的问题!):
[MATRIX]
Store Number ITEM1 ITEM2
------------------------------
123456 1 15
678920 31 9
[ITEMTYPE]
id ITEMTYPE
------------------------------
1 ITEM1
2 ITEM2
欣赏响应!
你可以给两个表的数据库结构和示例数据吗? –
只允许在使用SQL时执行此操作?我的意思是你可以使用辅助服务器语言,如C#或PHP或其他? –
对不起劳伦斯 - 我忘了发布你的第二个查询的回应 - SQL查询正在asp.net(VB.net)内消耗并馈送到gridview。 – Dweeb