2013-06-25 56 views
1

我试图在我们的订单表中为每个国家返回邮政编码数据,这应该是一个简单的查询,但我不能完全得到它的工作。查询执行正常,但结果的每一行只是:SQL根据不同的列值选择行

  • POSTCODE | COUNTRY | ID <全国ID

我的查询如下:

SELECT 'POSTCODE' as billing_postcode, 'COUNTRY' as Title, billing_country_id 
FROM [DB].[dbo].[Order] 
INNER JOIN [DB].[dbo].[Country] 
ON country_id = billing_country_id 
GROUP BY billing_country_id 

下面是我得到的输出的例子: -

enter image description here

为什么没有返回邮编+国家?任何人都可以看到我在这里做错了吗?

感谢

编辑*

基本定单表结构:

的OrderId | billing_postcode | billing_country_id

基本Country表结构:

COUNTRY_ID |标题

+0

您使用省略号,它创建只是字符串别名部分使用它。重写你的查询开始为:“SELECT POSTCODE as billing_postcode,COUNTRY as Title ...” – Arvo

回答

2

您选择了字符串PostCodeCountry而不是实际的列。

SELECT POSTCODE as 'billing_postcode', COUNTRY as 'Title', billing_country_id 
FROM [DB].[dbo].[Order] 
INNER JOIN [DB].[dbo].[Country] 
ON country_id = billing_country_id 
GROUP BY billing_country_id 

从您的编辑看来你需要周围切换列/别名:

SELECT billing_postcode AS 'POSTCODE', Title as 'Country', billing_country_id 
FROM [DB].[dbo].[Order] 
INNER JOIN [DB].[dbo].[Country] 
ON country_id = billing_country_id 
+0

我认为这可能是这样简单的事情,但是我然后收到第二个错误,'POSTCODE'等...不是一个有效的列 – DGibbs

+0

@DGibbs - 你的表格结构是什么?将POSTCODE替换为确切的列名称 –

+0

对不起,我应该指出的是,我将使用表结构编辑问题。现在,'billing_postcode'和'Title'是来自'Order'和'Country'的列。这样做我得到一个错误,抱怨列不包含在聚合函数或组中 – DGibbs

1

做这样的。卸下列名撇号,而是

SELECT POSTCODE as 'billing_postcode', COUNTRY as 'Title', billing_country_id 
FROM [DB].[dbo].[Order] 
INNER JOIN [DB].[dbo].[Country] 
ON country_id = billing_country_id 
GROUP BY billing_country_id 
+0

请参阅评论在darrens的回答中,这也是一样的 – DGibbs