我有两张桌子。
表1
CREATE TABLE ##MedianTemp1 (
ProductID INT NOT NULL,
CountryCodeID INT NOT NULL,
Y1977 INT NULL,
Y1978 INT NULL,
Y1979 INT NULL PRIMARY KEY CLUSTERED (ProductID,CountryCodeID))
INSERT INTO ##MedianTemp1 VALUES
(1, 100, 0, 0, 0),
(2, 100, 0, 0, 0),
(3, 100, 0, 0, 0),
(4, 100, 0, 0, 0),
(5, 100, 1, 0, 0),
(6, 100, 1, 1, 0),
(7, 100, 1, 1, 1),
(8, 100, 1, 1, 1),
(9, 100, 1, 1, 1),
(1, 101, 0, 0, 0),
(2, 101, 0, 0, 0),
(3, 101, 0, 0, 0),
(4, 101, 1, 0, 0),
(5, 101, 1, 1, 0),
(6, 101, 1, 1, 1),
(7, 101, 1, 1, 1),
(8, 101, 1, 1, 1),
(9, 101, 1, 1, 1)
表2
CREATE TABLE ##MedianTemp2 (
ProductID INT NOT NULL,
CountryCodeID INT NOT NULL,
Y1977 FLOAT(53) NULL,
Y1978 FLOAT(53) NULL,
Y1979 FLOAT(53) NULL PRIMARY KEY CLUSTERED (ProductID,CountryCodeID))
INSERT INTO ##MedianTemp2 VALUES
(1, 100, 5, 4, 1),
(2, 100, 6, 3, 2),
(3, 100, 1, 2, 4),
(4, 100, 2, 1, 5),
(5, 100, 6, 2, 6),
(6, 100, 7, 3, 7),
(7, 100, 1, 2, 3),
(8, 100, 7, 1, 8),
(9, 100, 9, 6, 9),
(1, 101, 5, 4, 1),
(2, 101, 6, 3, 2),
(3, 101, 1, 2, 4),
(4, 101, 2, 1, 5),
(5, 101, 6, 2, 6),
(6, 101, 7, 3, 7),
(7, 101, 1, 2, 3),
(8, 101, 7, 1, 8),
(9, 101, 9, 6, 9)
我需要创建这个:
##MedianResult (
ProductID INT NOT NULL,
CountryCodeID INT NOT NULL,
Y1977 FLOAT(53) NULL,
Y1978 FLOAT(53) NULL,
Y1979 FLOAT(53) NULL
PRIMARY KEY CLUSTERED (ProductID,CountryCodeID))
查询应该找到每年唯一一个ProductID
以及每个CountryID(来自##medianTemp1
表),其值'0'
和ProductID+1
将{{1} }}。
对于这个成立的1
(对于年份和每个国家,它将是不同的)我们应该使用来自productID
表的值来应用公式。 ##MedianTemp2
。
我知道我的描述有点奇怪......但不知道如何更好地描述我的问题。
答案 0 :(得分:1)
DROP TABLE #mt1
GO
-- first you need to bring your table to a usable format:
select
productid, countrycodeid,
val, yr
into #mt1
from ##MedianTemp1
unpivot (
val for yr in (y1977, y1978, y1979)
) y
-- and here to find the products
select
a.*
,b.*
from #mt1 a
join #mt1 b
on a.productid+1=b.productid
and a.countrycodeid=b.countrycodeid
and a.yr=b.yr
where 1=1
and a.val=0
and b.val=1
要进行最终计算,请再次使用上述方法,即:
我想你会明白这一点。 F5样本+1。:)。