HelloOverflow的同事们,您好!
我会简短,并切入点: 我在MS Access中有一个表,它包含2列感兴趣的县和TGTE(地热能类型)。 TGTE列的类型为VARCHAR,它可以有两个值中的一个,以便更容易说它是L或H.
我需要创建一个显示结果的SQL查询,如下所示:
贝娄是表格的一部分:
County | TGTE | ... |
First | L |
First | L |
First | H |
Second | H |
Third | L |
__________________
我需要一个结果查询,显示每个县中不同TGTE的计数,如下所示:
County | TGTE = L | TGTE = H |
First | 2 | 1 |
Second | 0 | 1 |
Third | 1 | 0 |
__________________________________
如何创建显示上述所需结果的查询?
注意: 我浏览了档案,发现了类似的东西,但没有什么可以帮助我的。 说实话,我不知道如何正确地提出问题,所以我猜这就是为什么谷歌没有多大帮助......
我试过这个:
SELECT County, COUNT(TGTE) as [Something]
FROM MyTable
WHERE TGTE = "L"
GROUPBY COUNTY;
但这是我得到的结果:
County | TGTE = L |
First | 2 |
Second | 0 |
Third | 1 |
__________________________________
如果我将L更改为H,在上面的查询中,我得到了这个:
County | TGTE = H |
First | 1 |
Second | 1 |
Third | 0 |
__________________________________
我在Windows XP上使用C ++工作,使用ADO访问MS Access 2007数据库。 如果还有其他任何我可以提供的帮助,请问,我很乐意这样做。
在尝试Declan的解决方案后,这就是我得到的:
主表中的值:
| County | TGTE |
| Стари Град | H |
| Сурчин | L |
| Стари Град | H |
| Савски Венац | H |
| Раковица | H |
输出:
| County | TGTE = L | TGTE = H |
| Раковица | 1 | 1 |
| Савски Венац | 1 | 0 |
| Сурчин | 1 | 0 |
| Стари Град | 1 | 0 |
它应输出:
| County | TGTE = L | TGTE = H |
| Раковица | 1 | 0 |
| Савски Венац | 1 | 0 |
| Сурчин | 0 | 1 |
| Стари Град | 2 | 0 |
在Declan的请求中,这是我使用的原始查询:
wchar_t *query = L"select Општина, \
sum( iif( Тип_геотермалне_енергије =
'Хидрогеотермална енергија', 1, 0 ) ) as [HGTE], \
sum( iif( Тип_геотермалне_енергије =
'Литогеотермална енергија', 1, 0 ) ) as [LGTE] \
from Објекат \
group by Општина; ";
翻译为我们的示例,它看起来像这样:
wchar_t *query = L"select County, \
sum( iif( TGTE = 'H', 1, 0 ) ) as [HGTE], \
sum( iif( TGTE = 'L', 1, 0 ) ) as [LGTE] \
from MyTable \
group by County; ";
在Access中复制上述查询并运行后,一切正常,因此我认为问题在于ADO的使用。
浏览互联网后,我确信问题是ADO。 如何在ADO中使用IIF(),以便我的查询可以工作? 如果无法完成,那么如何修改y查询以执行我上面描述的操作?
答案 0 :(得分:1)
您需要在另外两列中使用iif函数。这里有一些伪代码可以帮助你入门。
SELECT County
,sum(iif(TGTE = "L",1,0)) as [L_Count]
,sum(iif(TGTE = "H",1,0)) as [H_Count]
FROM MyTable
GROUP BY
COUNTY;
答案 1 :(得分:0)
我重新设计了Deslan的查询,如下所述,它有效:
SELECT County
,sum( switch( ТGTE = 'L', 1, TGTE = 'H', 0 ) ) as [L_Count]
,sum( switch( ТGTE = 'H', 1, TGTE = 'L', 0 ) ) as [H_Count]
FROM MyTable
GROUP BY
County;
当我通过ADO和MS Access 2007运行它时,一切正常。
我不明白为什么IIF()不能在ADO中工作,也许它不受支持或者某种东西......
感谢Declan,无论如何,为你的解决方案。你有我的+1。