SQL根据不同的列值选择行

时间:2013-06-25 10:15:49

标签: c# sql sql-server-2008

我正在尝试在订单表中为每个国家/地区返回邮政编码数据,这应该是一个简单的查询,但我无法让它工作。查询执行正常,但结果的每一行只是:

  • 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_id |标题

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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